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)
# check for g++ >= 4.7 or clang++ > = 3.2
try_run(ProgramResult
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)
if (NOT CompilationSucceeded OR NOT ProgramResult EQUAL 0)
message(FATAL_ERROR "Cannot determine compiler version")
......@@ -374,7 +374,7 @@ endif ()
# check for doxygen and add custom "doc" target to Makefile
find_package(Doxygen)
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)
add_custom_target(doc ${DOXYGEN_EXECUTABLE} ${CMAKE_HOME_DIRECTORY}/Doxyfile
WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}
......
......@@ -31,10 +31,6 @@
#ifndef 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__)
# define CPPA_CLANG
# define CPPA_DEPRECATED __attribute__((__deprecated__))
......@@ -54,6 +50,10 @@
# endif
#elif defined(__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)
# define CPPA_WINDOWS
#else
......@@ -80,7 +80,7 @@
CPPA_REQUIRE__(#stmt, __FILE__, __LINE__); \
}((void) 0)
#else // CPPA_DEBUG_MODE
#define CPPA_REQUIRE(unused) ((void) 0)
#define CPPA_REQUIRE(unused) static_cast<void>(0)
#endif // CPPA_DEBUG_MODE
#define CPPA_CRITICAL__(error, file, line) { \
......@@ -105,7 +105,6 @@ std::unique_ptr<T> create_unique(Args&&... args) {
return std::unique_ptr<T>{new T(std::forward<Args>(args)...)};
}
#ifdef CPPA_WINDOWS
typedef SOCKET native_socket_type;
typedef const char* socket_send_ptr;
......
......@@ -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)...));
}
/**
* @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) {
to.enqueue({invalid_actor_addr, to}, std::move(msg));
}
......
......@@ -28,10 +28,12 @@
\******************************************************************************/
#include <atomic>
#include <ios> // std::ios_base::failure
#include <cstring>
#include <utility>
#include "cppa/cppa.hpp"
#include "cppa/util/buffer.hpp"
#include "cppa/io/input_stream.hpp"
......@@ -40,13 +42,12 @@ namespace cppa { namespace util {
namespace {
const size_t default_chunk_size = 512;
const size_t default_max_size = 16 * 1024 * 1024;
} // namespace anonymous
buffer::buffer()
: 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)
: m_data(nullptr), m_written(0), m_allocated(0), m_final_size(0)
......@@ -62,7 +63,7 @@ buffer::buffer(buffer&& other)
buffer::buffer(const buffer& other)
: 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);
}
......
......@@ -453,4 +453,22 @@ middleman* middleman::create_singleton() {
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 @@
* 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 <string>
#include <vector>
......@@ -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};
}
} } // 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 @@
\******************************************************************************/
#include "cppa/config.hpp"
#if !defined(CPPA_LINUX) || defined(CPPA_POLL_IMPL)
#include <poll.h>
#include "cppa/io/middleman_event_handler.hpp"
......@@ -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};
}
} } // 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