Commit 9c9c4285 authored by Dominik Charousset's avatar Dominik Charousset

Merge branch 'master' into unstable

parents cf8d4947 2d139cd8
...@@ -57,7 +57,7 @@ endif (HAVE_VALGRIND_H) ...@@ -57,7 +57,7 @@ endif (HAVE_VALGRIND_H)
# check for g++ >= 4.7 or clang++ > = 3.2 # check for g++ >= 4.7 or clang++ > = 3.2
try_run(ProgramResult try_run(ProgramResult
CompilationSucceeded CompilationSucceeded
${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/get_compiler_version.cpp ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/get_compiler_version.cpp
RUN_OUTPUT_VARIABLE CompilerVersion) RUN_OUTPUT_VARIABLE CompilerVersion)
if (NOT CompilationSucceeded OR NOT ProgramResult EQUAL 0) if (NOT CompilationSucceeded OR NOT ProgramResult EQUAL 0)
message(FATAL_ERROR "Cannot determine compiler version") message(FATAL_ERROR "Cannot determine compiler version")
...@@ -374,7 +374,7 @@ endif () ...@@ -374,7 +374,7 @@ endif ()
# check for doxygen and add custom "doc" target to Makefile # check for doxygen and add custom "doc" target to Makefile
find_package(Doxygen) find_package(Doxygen)
if (DOXYGEN_FOUND) if (DOXYGEN_FOUND)
configure_file(${CMAKE_SOURCE_DIR}/Doxyfile.in ${CMAKE_SOURCE_DIR}/Doxyfile configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile
@ONLY) @ONLY)
add_custom_target(doc ${DOXYGEN_EXECUTABLE} ${CMAKE_HOME_DIRECTORY}/Doxyfile add_custom_target(doc ${DOXYGEN_EXECUTABLE} ${CMAKE_HOME_DIRECTORY}/Doxyfile
WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY} WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}
......
...@@ -31,10 +31,6 @@ ...@@ -31,10 +31,6 @@
#ifndef CPPA_CONFIG_HPP #ifndef CPPA_CONFIG_HPP
#define CPPA_CONFIG_HPP #define CPPA_CONFIG_HPP
// uncomment this line or use define CPPA_DISABLE_CONTEXT_SWITCHING using CMAKE
// if boost.context is not available on your platform
//#define CPPA_DISABLE_CONTEXT_SWITCHING
#if defined(__clang__) #if defined(__clang__)
# define CPPA_CLANG # define CPPA_CLANG
# define CPPA_DEPRECATED __attribute__((__deprecated__)) # define CPPA_DEPRECATED __attribute__((__deprecated__))
...@@ -54,6 +50,10 @@ ...@@ -54,6 +50,10 @@
# endif # endif
#elif defined(__linux__) #elif defined(__linux__)
# define CPPA_LINUX # define CPPA_LINUX
# include <linux/version.h>
# if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
# define CPPA_POLL_IMPL
# endif
#elif defined(WIN32) #elif defined(WIN32)
# define CPPA_WINDOWS # define CPPA_WINDOWS
#else #else
...@@ -80,7 +80,7 @@ ...@@ -80,7 +80,7 @@
CPPA_REQUIRE__(#stmt, __FILE__, __LINE__); \ CPPA_REQUIRE__(#stmt, __FILE__, __LINE__); \
}((void) 0) }((void) 0)
#else // CPPA_DEBUG_MODE #else // CPPA_DEBUG_MODE
#define CPPA_REQUIRE(unused) ((void) 0) #define CPPA_REQUIRE(unused) static_cast<void>(0)
#endif // CPPA_DEBUG_MODE #endif // CPPA_DEBUG_MODE
#define CPPA_CRITICAL__(error, file, line) { \ #define CPPA_CRITICAL__(error, file, line) { \
...@@ -105,7 +105,6 @@ std::unique_ptr<T> create_unique(Args&&... args) { ...@@ -105,7 +105,6 @@ std::unique_ptr<T> create_unique(Args&&... args) {
return std::unique_ptr<T>{new T(std::forward<Args>(args)...)}; return std::unique_ptr<T>{new T(std::forward<Args>(args)...)};
} }
#ifdef CPPA_WINDOWS #ifdef CPPA_WINDOWS
typedef SOCKET native_socket_type; typedef SOCKET native_socket_type;
typedef const char* socket_send_ptr; typedef const char* socket_send_ptr;
......
...@@ -447,6 +447,18 @@ void send_as(const actor& from, const channel& to, Ts&&... args) { ...@@ -447,6 +447,18 @@ void send_as(const actor& from, const channel& to, Ts&&... args) {
send_tuple_as(from, to, make_any_tuple(std::forward<Ts>(args)...)); send_tuple_as(from, to, make_any_tuple(std::forward<Ts>(args)...));
} }
/**
* @brief Sets the maximum size of a message.
* @param size The maximum number of bytes a message may occupy.
*/
void max_msg_size(size_t size);
/**
* @brief Retrieves the maximum size of messages.
* @returns The number maximum number of bytes a message may occupy.
*/
size_t max_msg_size();
inline void anon_send_tuple(const channel& to, any_tuple msg) { inline void anon_send_tuple(const channel& to, any_tuple msg) {
to.enqueue({invalid_actor_addr, to}, std::move(msg)); to.enqueue({invalid_actor_addr, to}, std::move(msg));
} }
......
...@@ -28,10 +28,12 @@ ...@@ -28,10 +28,12 @@
\******************************************************************************/ \******************************************************************************/
#include <atomic>
#include <ios> // std::ios_base::failure #include <ios> // std::ios_base::failure
#include <cstring> #include <cstring>
#include <utility> #include <utility>
#include "cppa/cppa.hpp"
#include "cppa/util/buffer.hpp" #include "cppa/util/buffer.hpp"
#include "cppa/io/input_stream.hpp" #include "cppa/io/input_stream.hpp"
...@@ -40,13 +42,12 @@ namespace cppa { namespace util { ...@@ -40,13 +42,12 @@ namespace cppa { namespace util {
namespace { namespace {
const size_t default_chunk_size = 512; const size_t default_chunk_size = 512;
const size_t default_max_size = 16 * 1024 * 1024;
} // namespace anonymous } // namespace anonymous
buffer::buffer() buffer::buffer()
: m_data(nullptr), m_written(0), m_allocated(0), m_final_size(0) : m_data(nullptr), m_written(0), m_allocated(0), m_final_size(0)
, m_chunk_size(default_chunk_size), m_max_buffer_size(default_max_size) { } , m_chunk_size(default_chunk_size), m_max_buffer_size(max_msg_size()) { }
buffer::buffer(size_t chunk_size, size_t max_buffer_size) buffer::buffer(size_t chunk_size, size_t max_buffer_size)
: m_data(nullptr), m_written(0), m_allocated(0), m_final_size(0) : m_data(nullptr), m_written(0), m_allocated(0), m_final_size(0)
...@@ -62,7 +63,7 @@ buffer::buffer(buffer&& other) ...@@ -62,7 +63,7 @@ buffer::buffer(buffer&& other)
buffer::buffer(const buffer& other) buffer::buffer(const buffer& other)
: m_data(nullptr), m_written(0), m_allocated(0), m_final_size(0) : m_data(nullptr), m_written(0), m_allocated(0), m_final_size(0)
, m_chunk_size(default_chunk_size), m_max_buffer_size(default_max_size) { , m_chunk_size(default_chunk_size), m_max_buffer_size(max_msg_size()) {
write(other, grow_if_needed); write(other, grow_if_needed);
} }
......
...@@ -453,4 +453,22 @@ middleman* middleman::create_singleton() { ...@@ -453,4 +453,22 @@ middleman* middleman::create_singleton() {
return new middleman_impl; return new middleman_impl;
} }
} } // namespace cppa::detail } // namespace io
namespace {
std::atomic<size_t> default_max_msg_size{16 * 1024 * 1024};
} // namespace <anonymous>
void max_msg_size(size_t size)
{
default_max_msg_size = size;
}
size_t max_msg_size()
{
return default_max_msg_size;
}
} // namespace cppa
...@@ -27,6 +27,11 @@ ...@@ -27,6 +27,11 @@
* along with libcppa. If not, see <http://www.gnu.org/licenses/>. * * along with libcppa. If not, see <http://www.gnu.org/licenses/>. *
\******************************************************************************/ \******************************************************************************/
#include "cppa/config.hpp"
#if defined(CPPA_LINUX) && !defined(CPPA_POLL_IMPL)
#include <ios> #include <ios>
#include <string> #include <string>
#include <vector> #include <vector>
...@@ -172,4 +177,10 @@ std::unique_ptr<middleman_event_handler> middleman_event_handler::create() { ...@@ -172,4 +177,10 @@ std::unique_ptr<middleman_event_handler> middleman_event_handler::create() {
return std::unique_ptr<middleman_event_handler>{new middleman_event_handler_impl}; return std::unique_ptr<middleman_event_handler>{new middleman_event_handler_impl};
} }
} } // namespace cppa::network } } // namespace cppa::io
#else // defined(CPPA_LINUX) && !defined(CPPA_POLL_IMPL)
int keep_compiler_happy_for_epoll_impl() { return 42; }
#endif // defined(CPPA_LINUX) && !defined(CPPA_POLL_IMPL)
...@@ -28,6 +28,10 @@ ...@@ -28,6 +28,10 @@
\******************************************************************************/ \******************************************************************************/
#include "cppa/config.hpp"
#if !defined(CPPA_LINUX) || defined(CPPA_POLL_IMPL)
#include <poll.h> #include <poll.h>
#include "cppa/io/middleman_event_handler.hpp" #include "cppa/io/middleman_event_handler.hpp"
...@@ -154,4 +158,10 @@ std::unique_ptr<middleman_event_handler> middleman_event_handler::create() { ...@@ -154,4 +158,10 @@ std::unique_ptr<middleman_event_handler> middleman_event_handler::create() {
return std::unique_ptr<middleman_event_handler>{new middleman_event_handler_impl}; return std::unique_ptr<middleman_event_handler>{new middleman_event_handler_impl};
} }
} } // namespace cppa::network } } // namespace cppa::io
#else // !defined(CPPA_LINUX) || defined(CPPA_POLL_IMPL)
int keep_compiler_happy_for_poll_impl() { return 42; }
#endif // !defined(CPPA_LINUX) || defined(CPPA_POLL_IMPL)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment