From ea26e68b9d4c3625e80b959e9db02fcdff14a7b1 Mon Sep 17 00:00:00 2001 From: Jens Auer Date: Thu, 8 Oct 2015 22:06:33 +0200 Subject: [PATCH 1/4] New options to set send/recv buffer size for TCP sockets. --- doc/zmq_getsockopt.txt | 27 +++++++++++++++++++++++++++ doc/zmq_setsockopt.txt | 27 +++++++++++++++++++++++++++ include/zmq.h | 2 ++ src/options.cpp | 29 +++++++++++++++++++++++++++++ src/options.hpp | 4 ++++ src/stream_engine.cpp | 24 ++++++++++++------------ 6 files changed, 101 insertions(+), 12 deletions(-) diff --git a/doc/zmq_getsockopt.txt b/doc/zmq_getsockopt.txt index 1ca6646e..fb7583f6 100644 --- a/doc/zmq_getsockopt.txt +++ b/doc/zmq_getsockopt.txt @@ -736,6 +736,33 @@ Option value unit:: N/A Default value:: not set Applicable socket types:: all, when using TCP transport +ZMQ_TCP_RECV_BUFFER: Size of the TCP receive buffer +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The 'ZMQ_RECV_BUFFER' specifies the maximum number of bytes which can +be received by an individual syscall to receive data from the TCP +socket. The buffer size is specified as an integer number from 0 (very small) +to 10 (very large). The default value is 3. + + +[horizontal] +Option value type:: int +Option value unit:: N/A +Default value:: 3 +Applicable socket types:: all, when using TCP transport + +ZMQ_TCP_SEND_BUFFER: Size of the TCP receive buffer +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The 'ZMQ_SEND_BUFFER' specifies the maximum number of bytes which can +be sent by an individual syscall to transmit data to the TCP +socket. The buffer size is specified as an integer number from 0 (very small) +to 10 (very large). The default value is 3. + + +[horizontal] +Option value type:: int +Option value unit:: N/A +Default value:: 3 +Applicable socket types:: all, when using TCP transport RETURN VALUE ------------ diff --git a/doc/zmq_setsockopt.txt b/doc/zmq_setsockopt.txt index de79c93b..9921b12d 100644 --- a/doc/zmq_setsockopt.txt +++ b/doc/zmq_setsockopt.txt @@ -1071,6 +1071,33 @@ Option value unit:: boolean Default value:: 1 (true) Applicable socket types:: all, when using TCP transports. +ZMQ_TCP_RECV_BUFFER: Size of the TCP receive buffer +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The 'ZMQ_RECV_BUFFER' specifies the maximum number of bytes which can +be received by an individual syscall to receive data from the TCP +socket. The buffer size is specified as an integer number from 0 (very small) +to 10 (very large). The default value is 3. + + +[horizontal] +Option value type:: int +Option value unit:: N/A +Default value:: 3 +Applicable socket types:: all, when using TCP transport + +ZMQ_TCP_SEND_BUFFER: Size of the TCP receive buffer +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The 'ZMQ_SEND_BUFFER' specifies the maximum number of bytes which can +be sent by an individual syscall to transmit data to the TCP +socket. The buffer size is specified as an integer number from 0 (very small) +to 10 (very large). The default value is 3. + + +[horizontal] +Option value type:: int +Option value unit:: N/A +Default value:: 3 +Applicable socket types:: all, when using TCP transport RETURN VALUE ------------ diff --git a/include/zmq.h b/include/zmq.h index 62479163..bc587bf9 100644 --- a/include/zmq.h +++ b/include/zmq.h @@ -323,6 +323,8 @@ ZMQ_EXPORT uint32_t zmq_msg_routing_id (zmq_msg_t *msg); #define ZMQ_CONNECT_TIMEOUT 79 #define ZMQ_TCP_RETRANSMIT_TIMEOUT 80 #define ZMQ_THREAD_SAFE 81 +#define ZMQ_TCP_RECV_BUFFER 82 +#define ZMQ_TCP_SEND_BUFFER 83 /* Message options */ #define ZMQ_MORE 1 diff --git a/src/options.cpp b/src/options.cpp index 67dfe025..5c6e8406 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -28,6 +28,7 @@ */ #include +#include #include "options.hpp" #include "err.hpp" @@ -65,6 +66,8 @@ zmq::options_t::options_t () : tcp_keepalive_cnt (-1), tcp_keepalive_idle (-1), tcp_keepalive_intvl (-1), + tcp_recv_buffer_size (3), + tcp_send_buffer_size (3), mechanism (ZMQ_NULL), as_server (0), gss_plaintext (false), @@ -280,6 +283,18 @@ int zmq::options_t::setsockopt (int option_, const void *optval_, } break; + case ZMQ_TCP_RECV_BUFFER: + if (is_int && (value >= 0 && value <= 10) ) { + tcp_send_buffer_size = static_cast(std::pow(2, value)) * 1024; + } + break; + + case ZMQ_TCP_SEND_BUFFER: + if (is_int && (value >= 0 && value <= 10) ) { + tcp_send_buffer_size = static_cast(std::pow(2, value)) * 1024; + } + break; + case ZMQ_IMMEDIATE: if (is_int && (value == 0 || value == 1)) { immediate = value; @@ -790,6 +805,20 @@ int zmq::options_t::getsockopt (int option_, void *optval_, size_t *optvallen_) } break; + case ZMQ_TCP_SEND_BUFFER: + if (is_int) { + *value = tcp_send_buffer_size; + return 0; + } + break; + + case ZMQ_TCP_RECV_BUFFER: + if (is_int) { + *value = tcp_recv_buffer_size; + return 0; + } + break; + case ZMQ_MECHANISM: if (is_int) { *value = mechanism; diff --git a/src/options.hpp b/src/options.hpp index 288a1b36..be04ec64 100644 --- a/src/options.hpp +++ b/src/options.hpp @@ -156,6 +156,10 @@ namespace zmq typedef std::vector tcp_accept_filters_t; tcp_accept_filters_t tcp_accept_filters; + // TCO buffer sizes + int tcp_recv_buffer_size; + int tcp_send_buffer_size; + // IPC accept() filters # if defined ZMQ_HAVE_SO_PEERCRED || defined ZMQ_HAVE_LOCAL_PEERCRED bool zap_ipc_creds; diff --git a/src/stream_engine.cpp b/src/stream_engine.cpp index 44814802..03c1f9a7 100644 --- a/src/stream_engine.cpp +++ b/src/stream_engine.cpp @@ -203,10 +203,10 @@ void zmq::stream_engine_t::plug (io_thread_t *io_thread_, if (options.raw_socket) { // no handshaking for raw sock, instantiate raw encoder and decoders - encoder = new (std::nothrow) raw_encoder_t (out_batch_size); + encoder = new (std::nothrow) raw_encoder_t (options.tcp_send_buffer_size); alloc_assert (encoder); - decoder = new (std::nothrow) raw_decoder_t (in_batch_size); + decoder = new (std::nothrow) raw_decoder_t (options.tcp_recv_buffer_size); alloc_assert (decoder); // disable handshaking for raw socket @@ -385,12 +385,12 @@ void zmq::stream_engine_t::out_event () outpos = NULL; outsize = encoder->encode (&outpos, 0); - while (outsize < out_batch_size) { + while (outsize < options.tcp_send_buffer_size) { if ((this->*next_msg) (&tx_msg) == -1) break; encoder->load_msg (&tx_msg); unsigned char *bufptr = outpos + outsize; - size_t n = encoder->encode (&bufptr, out_batch_size - outsize); + size_t n = encoder->encode (&bufptr, options.tcp_send_buffer_size - outsize); zmq_assert (n > 0); if (outpos == NULL) outpos = bufptr; @@ -587,10 +587,10 @@ bool zmq::stream_engine_t::handshake () return false; } - encoder = new (std::nothrow) v1_encoder_t (out_batch_size); + encoder = new (std::nothrow) v1_encoder_t (options.tcp_send_buffer_size); alloc_assert (encoder); - decoder = new (std::nothrow) v1_decoder_t (in_batch_size, options.maxmsgsize); + decoder = new (std::nothrow) v1_decoder_t (options.tcp_recv_buffer_size, options.maxmsgsize); alloc_assert (decoder); // We have already sent the message header. @@ -635,11 +635,11 @@ bool zmq::stream_engine_t::handshake () } encoder = new (std::nothrow) v1_encoder_t ( - out_batch_size); + options.tcp_send_buffer_size); alloc_assert (encoder); decoder = new (std::nothrow) v1_decoder_t ( - in_batch_size, options.maxmsgsize); + options.tcp_recv_buffer_size, options.maxmsgsize); alloc_assert (decoder); } else @@ -650,19 +650,19 @@ bool zmq::stream_engine_t::handshake () return false; } - encoder = new (std::nothrow) v2_encoder_t (out_batch_size); + encoder = new (std::nothrow) v2_encoder_t (options.tcp_send_buffer_size); alloc_assert (encoder); decoder = new (std::nothrow) v2_decoder_t ( - in_batch_size, options.maxmsgsize); + options.tcp_recv_buffer_size, options.maxmsgsize); alloc_assert (decoder); } else { - encoder = new (std::nothrow) v2_encoder_t (out_batch_size); + encoder = new (std::nothrow) v2_encoder_t (options.tcp_send_buffer_size); alloc_assert (encoder); decoder = new (std::nothrow) v2_decoder_t ( - in_batch_size, options.maxmsgsize); + options.tcp_recv_buffer_size, options.maxmsgsize); alloc_assert (decoder); if (options.mechanism == ZMQ_NULL From 5f5fb5e5ad42151ef2073a4d1cd9123c9229a6d1 Mon Sep 17 00:00:00 2001 From: roalz Date: Thu, 5 Nov 2015 16:08:33 +0100 Subject: [PATCH 2/4] Added solution and project files to build with Microsoft Visual Studio 2015 --- builds/msvc/readme.txt | 5 +- builds/msvc/vs2015/libsodium.import.props | 52 ++ builds/msvc/vs2015/libsodium.import.xml | 17 + builds/msvc/vs2015/libzmq.import.props | 66 ++ builds/msvc/vs2015/libzmq.import.xml | 38 ++ builds/msvc/vs2015/libzmq.sln | 208 +++++++ builds/msvc/vs2015/libzmq/libzmq.props | 69 +++ builds/msvc/vs2015/libzmq/libzmq.vcxproj | 260 ++++++++ .../msvc/vs2015/libzmq/libzmq.vcxproj.filters | 570 ++++++++++++++++++ builds/msvc/vs2015/libzmq/libzmq.xml | 25 + 10 files changed, 1308 insertions(+), 2 deletions(-) create mode 100644 builds/msvc/vs2015/libsodium.import.props create mode 100644 builds/msvc/vs2015/libsodium.import.xml create mode 100644 builds/msvc/vs2015/libzmq.import.props create mode 100644 builds/msvc/vs2015/libzmq.import.xml create mode 100644 builds/msvc/vs2015/libzmq.sln create mode 100644 builds/msvc/vs2015/libzmq/libzmq.props create mode 100644 builds/msvc/vs2015/libzmq/libzmq.vcxproj create mode 100644 builds/msvc/vs2015/libzmq/libzmq.vcxproj.filters create mode 100644 builds/msvc/vs2015/libzmq/libzmq.xml diff --git a/builds/msvc/readme.txt b/builds/msvc/readme.txt index 1ec113e9..88835fc1 100644 --- a/builds/msvc/readme.txt +++ b/builds/msvc/readme.txt @@ -4,10 +4,11 @@ Visual C++ 2008 => Visual C++ 9 Visual C++ 2010 => Visual C++ 10 Visual C++ 2012 => Visual C++ 11 Visual C++ 2013 => Visual C++ 12 +Visual C++ 2015 => Visual C++ 14 -Note that solution file icons reflect the compiler version ([9], [10], [11], [12]), not the product version. +Note that solution file icons reflect the compiler version ([9], [10], [11], [12], [14]), not the product version. -The vs2013/vs2012/vs2010 solution and project files differ only in versioning. +The vs2015/vs2013/vs2012/vs2010 solution and project files differ only in versioning. More info here: diff --git a/builds/msvc/vs2015/libsodium.import.props b/builds/msvc/vs2015/libsodium.import.props new file mode 100644 index 00000000..c7b68c90 --- /dev/null +++ b/builds/msvc/vs2015/libsodium.import.props @@ -0,0 +1,52 @@ + + + + + <_PropertySheetDisplayName>Libsodium Import Settings + + + + + + + + + + + + + $(ProjectDir)..\..\..\..\..\libsodium\src\libsodium\include;$(ProjectDir)..\..\..\..\..\libsodium\src\libsodium\include\sodium\;%(AdditionalIncludeDirectories) + SODIUM_STATIC;%(PreprocessorDefinitions) + + + advapi32.lib;libsodium.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\..\libsodium\bin\$(PlatformName)\Debug\$(PlatformToolset)\$(Linkage-libsodium)\;%(AdditionalLibraryDirectories) + $(ProjectDir)..\..\..\..\..\libsodium\bin\$(PlatformName)\Release\$(PlatformToolset)\$(Linkage-libsodium)\;%(AdditionalLibraryDirectories) + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/builds/msvc/vs2015/libsodium.import.xml b/builds/msvc/vs2015/libsodium.import.xml new file mode 100644 index 00000000..dbcf4e5a --- /dev/null +++ b/builds/msvc/vs2015/libsodium.import.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/builds/msvc/vs2015/libzmq.import.props b/builds/msvc/vs2015/libzmq.import.props new file mode 100644 index 00000000..58943bb5 --- /dev/null +++ b/builds/msvc/vs2015/libzmq.import.props @@ -0,0 +1,66 @@ + + + + + <_PropertySheetDisplayName>ZMQ Import Settings + + + + + + + + + + true + + + + + + + ZMQ_HAVE_OPENPGM;%(PreprocessorDefinitions) + HAVE_LIBSODIUM;%(PreprocessorDefinitions) + HAVE_LIBGSSAPI_KRB5;%(PreprocessorDefinitions) + + + + + + + + $(ProjectDir)..\..\..\..\..\libzmq\include\;%(AdditionalIncludeDirectories) + ZMQ_STATIC;%(PreprocessorDefinitions) + + + libzmq.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\..\libzmq\bin\$(PlatformName)\Debug\$(PlatformToolset)\$(Linkage-libzmq)\;%(AdditionalLibraryDirectories) + $(ProjectDir)..\..\..\..\..\libzmq\bin\$(PlatformName)\Release\$(PlatformToolset)\$(Linkage-libzmq)\;%(AdditionalLibraryDirectories) + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/builds/msvc/vs2015/libzmq.import.xml b/builds/msvc/vs2015/libzmq.import.xml new file mode 100644 index 00000000..2b8a942d --- /dev/null +++ b/builds/msvc/vs2015/libzmq.import.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/builds/msvc/vs2015/libzmq.sln b/builds/msvc/vs2015/libzmq.sln new file mode 100644 index 00000000..34be09f5 --- /dev/null +++ b/builds/msvc/vs2015/libzmq.sln @@ -0,0 +1,208 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.23107.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libzmq", "libzmq\libzmq.vcxproj", "{641C5F36-32EE-4323-B740-992B651CF9D6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "inproc_thr", "inproc_thr\inproc_thr.vcxproj", "{1077E977-95DD-4E73-A692-74647DD0CC1E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "inproc_lat", "inproc_lat\inproc_lat.vcxproj", "{6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "remote_thr", "remote_thr\remote_thr.vcxproj", "{B15E059C-0CBB-4A82-8C42-6567FB650802}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "remote_lat", "remote_lat\remote_lat.vcxproj", "{9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "local_thr", "local_thr\local_thr.vcxproj", "{8EF2DF6B-6646-460F-8032-913B70FE0E94}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "local_lat", "local_lat\local_lat.vcxproj", "{4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + DynDebug|Win32 = DynDebug|Win32 + DynDebug|x64 = DynDebug|x64 + DynRelease|Win32 = DynRelease|Win32 + DynRelease|x64 = DynRelease|x64 + LtcgDebug|Win32 = LtcgDebug|Win32 + LtcgDebug|x64 = LtcgDebug|x64 + LtcgRelease|Win32 = LtcgRelease|Win32 + LtcgRelease|x64 = LtcgRelease|x64 + StaticDebug|Win32 = StaticDebug|Win32 + StaticDebug|x64 = StaticDebug|x64 + StaticRelease|Win32 = StaticRelease|Win32 + StaticRelease|x64 = StaticRelease|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {641C5F36-32EE-4323-B740-992B651CF9D6}.DynDebug|Win32.ActiveCfg = DebugDLL|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.DynDebug|Win32.Build.0 = DebugDLL|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.DynDebug|x64.ActiveCfg = DebugDLL|x64 + {641C5F36-32EE-4323-B740-992B651CF9D6}.DynDebug|x64.Build.0 = DebugDLL|x64 + {641C5F36-32EE-4323-B740-992B651CF9D6}.DynRelease|Win32.ActiveCfg = ReleaseDLL|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.DynRelease|Win32.Build.0 = ReleaseDLL|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.DynRelease|x64.ActiveCfg = ReleaseDLL|x64 + {641C5F36-32EE-4323-B740-992B651CF9D6}.DynRelease|x64.Build.0 = ReleaseDLL|x64 + {641C5F36-32EE-4323-B740-992B651CF9D6}.LtcgDebug|Win32.ActiveCfg = DebugLTCG|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.LtcgDebug|Win32.Build.0 = DebugLTCG|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.LtcgDebug|x64.ActiveCfg = DebugLTCG|x64 + {641C5F36-32EE-4323-B740-992B651CF9D6}.LtcgDebug|x64.Build.0 = DebugLTCG|x64 + {641C5F36-32EE-4323-B740-992B651CF9D6}.LtcgRelease|Win32.ActiveCfg = ReleaseLTCG|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.LtcgRelease|Win32.Build.0 = ReleaseLTCG|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.LtcgRelease|x64.ActiveCfg = ReleaseLTCG|x64 + {641C5F36-32EE-4323-B740-992B651CF9D6}.LtcgRelease|x64.Build.0 = ReleaseLTCG|x64 + {641C5F36-32EE-4323-B740-992B651CF9D6}.StaticDebug|Win32.ActiveCfg = DebugLIB|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.StaticDebug|Win32.Build.0 = DebugLIB|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.StaticDebug|x64.ActiveCfg = DebugLIB|x64 + {641C5F36-32EE-4323-B740-992B651CF9D6}.StaticDebug|x64.Build.0 = DebugLIB|x64 + {641C5F36-32EE-4323-B740-992B651CF9D6}.StaticRelease|Win32.ActiveCfg = ReleaseLIB|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.StaticRelease|Win32.Build.0 = ReleaseLIB|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.StaticRelease|x64.ActiveCfg = ReleaseLIB|x64 + {641C5F36-32EE-4323-B740-992B651CF9D6}.StaticRelease|x64.Build.0 = ReleaseLIB|x64 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.DynDebug|Win32.ActiveCfg = DebugDEXE|Win32 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.DynDebug|Win32.Build.0 = DebugDEXE|Win32 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.DynDebug|x64.ActiveCfg = DebugDEXE|x64 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.DynDebug|x64.Build.0 = DebugDEXE|x64 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.DynRelease|Win32.ActiveCfg = ReleaseDEXE|Win32 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.DynRelease|Win32.Build.0 = ReleaseDEXE|Win32 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.DynRelease|x64.ActiveCfg = ReleaseDEXE|x64 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.DynRelease|x64.Build.0 = ReleaseDEXE|x64 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.LtcgDebug|Win32.ActiveCfg = DebugLEXE|Win32 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.LtcgDebug|Win32.Build.0 = DebugLEXE|Win32 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.LtcgDebug|x64.ActiveCfg = DebugLEXE|x64 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.LtcgDebug|x64.Build.0 = DebugLEXE|x64 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.LtcgRelease|Win32.ActiveCfg = ReleaseLEXE|Win32 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.LtcgRelease|Win32.Build.0 = ReleaseLEXE|Win32 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.LtcgRelease|x64.ActiveCfg = ReleaseLEXE|x64 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.LtcgRelease|x64.Build.0 = ReleaseLEXE|x64 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.StaticDebug|Win32.ActiveCfg = DebugSEXE|Win32 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.StaticDebug|Win32.Build.0 = DebugSEXE|Win32 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.StaticDebug|x64.ActiveCfg = DebugSEXE|x64 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.StaticDebug|x64.Build.0 = DebugSEXE|x64 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.StaticRelease|Win32.ActiveCfg = ReleaseSEXE|Win32 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.StaticRelease|Win32.Build.0 = ReleaseSEXE|Win32 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.StaticRelease|x64.ActiveCfg = ReleaseSEXE|x64 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.StaticRelease|x64.Build.0 = ReleaseSEXE|x64 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.DynDebug|Win32.ActiveCfg = DebugDEXE|Win32 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.DynDebug|Win32.Build.0 = DebugDEXE|Win32 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.DynDebug|x64.ActiveCfg = DebugDEXE|x64 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.DynDebug|x64.Build.0 = DebugDEXE|x64 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.DynRelease|Win32.ActiveCfg = ReleaseDEXE|Win32 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.DynRelease|Win32.Build.0 = ReleaseDEXE|Win32 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.DynRelease|x64.ActiveCfg = ReleaseDEXE|x64 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.DynRelease|x64.Build.0 = ReleaseDEXE|x64 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.LtcgDebug|Win32.ActiveCfg = DebugLEXE|Win32 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.LtcgDebug|Win32.Build.0 = DebugLEXE|Win32 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.LtcgDebug|x64.ActiveCfg = DebugLEXE|x64 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.LtcgDebug|x64.Build.0 = DebugLEXE|x64 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.LtcgRelease|Win32.ActiveCfg = ReleaseLEXE|Win32 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.LtcgRelease|Win32.Build.0 = ReleaseLEXE|Win32 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.LtcgRelease|x64.ActiveCfg = ReleaseLEXE|x64 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.LtcgRelease|x64.Build.0 = ReleaseLEXE|x64 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.StaticDebug|Win32.ActiveCfg = DebugSEXE|Win32 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.StaticDebug|Win32.Build.0 = DebugSEXE|Win32 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.StaticDebug|x64.ActiveCfg = DebugSEXE|x64 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.StaticDebug|x64.Build.0 = DebugSEXE|x64 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.StaticRelease|Win32.ActiveCfg = ReleaseSEXE|Win32 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.StaticRelease|Win32.Build.0 = ReleaseSEXE|Win32 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.StaticRelease|x64.ActiveCfg = ReleaseSEXE|x64 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.StaticRelease|x64.Build.0 = ReleaseSEXE|x64 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.DynDebug|Win32.ActiveCfg = DebugDEXE|Win32 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.DynDebug|Win32.Build.0 = DebugDEXE|Win32 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.DynDebug|x64.ActiveCfg = DebugDEXE|x64 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.DynDebug|x64.Build.0 = DebugDEXE|x64 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.DynRelease|Win32.ActiveCfg = ReleaseDEXE|Win32 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.DynRelease|Win32.Build.0 = ReleaseDEXE|Win32 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.DynRelease|x64.ActiveCfg = ReleaseDEXE|x64 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.DynRelease|x64.Build.0 = ReleaseDEXE|x64 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.LtcgDebug|Win32.ActiveCfg = DebugLEXE|Win32 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.LtcgDebug|Win32.Build.0 = DebugLEXE|Win32 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.LtcgDebug|x64.ActiveCfg = DebugLEXE|x64 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.LtcgDebug|x64.Build.0 = DebugLEXE|x64 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.LtcgRelease|Win32.ActiveCfg = ReleaseLEXE|Win32 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.LtcgRelease|Win32.Build.0 = ReleaseLEXE|Win32 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.LtcgRelease|x64.ActiveCfg = ReleaseLEXE|x64 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.LtcgRelease|x64.Build.0 = ReleaseLEXE|x64 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.StaticDebug|Win32.ActiveCfg = DebugSEXE|Win32 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.StaticDebug|Win32.Build.0 = DebugSEXE|Win32 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.StaticDebug|x64.ActiveCfg = DebugSEXE|x64 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.StaticDebug|x64.Build.0 = DebugSEXE|x64 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.StaticRelease|Win32.ActiveCfg = ReleaseSEXE|Win32 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.StaticRelease|Win32.Build.0 = ReleaseSEXE|Win32 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.StaticRelease|x64.ActiveCfg = ReleaseSEXE|x64 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.StaticRelease|x64.Build.0 = ReleaseSEXE|x64 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.DynDebug|Win32.ActiveCfg = DebugDEXE|Win32 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.DynDebug|Win32.Build.0 = DebugDEXE|Win32 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.DynDebug|x64.ActiveCfg = DebugDEXE|x64 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.DynDebug|x64.Build.0 = DebugDEXE|x64 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.DynRelease|Win32.ActiveCfg = ReleaseDEXE|Win32 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.DynRelease|Win32.Build.0 = ReleaseDEXE|Win32 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.DynRelease|x64.ActiveCfg = ReleaseDEXE|x64 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.DynRelease|x64.Build.0 = ReleaseDEXE|x64 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.LtcgDebug|Win32.ActiveCfg = DebugLEXE|Win32 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.LtcgDebug|Win32.Build.0 = DebugLEXE|Win32 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.LtcgDebug|x64.ActiveCfg = DebugLEXE|x64 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.LtcgDebug|x64.Build.0 = DebugLEXE|x64 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.LtcgRelease|Win32.ActiveCfg = ReleaseLEXE|Win32 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.LtcgRelease|Win32.Build.0 = ReleaseLEXE|Win32 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.LtcgRelease|x64.ActiveCfg = ReleaseLEXE|x64 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.LtcgRelease|x64.Build.0 = ReleaseLEXE|x64 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.StaticDebug|Win32.ActiveCfg = DebugSEXE|Win32 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.StaticDebug|Win32.Build.0 = DebugSEXE|Win32 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.StaticDebug|x64.ActiveCfg = DebugSEXE|x64 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.StaticDebug|x64.Build.0 = DebugSEXE|x64 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.StaticRelease|Win32.ActiveCfg = ReleaseSEXE|Win32 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.StaticRelease|Win32.Build.0 = ReleaseSEXE|Win32 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.StaticRelease|x64.ActiveCfg = ReleaseSEXE|x64 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.StaticRelease|x64.Build.0 = ReleaseSEXE|x64 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.DynDebug|Win32.ActiveCfg = DebugDEXE|Win32 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.DynDebug|Win32.Build.0 = DebugDEXE|Win32 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.DynDebug|x64.ActiveCfg = DebugDEXE|x64 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.DynDebug|x64.Build.0 = DebugDEXE|x64 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.DynRelease|Win32.ActiveCfg = ReleaseDEXE|Win32 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.DynRelease|Win32.Build.0 = ReleaseDEXE|Win32 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.DynRelease|x64.ActiveCfg = ReleaseDEXE|x64 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.DynRelease|x64.Build.0 = ReleaseDEXE|x64 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.LtcgDebug|Win32.ActiveCfg = DebugLEXE|Win32 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.LtcgDebug|Win32.Build.0 = DebugLEXE|Win32 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.LtcgDebug|x64.ActiveCfg = DebugLEXE|x64 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.LtcgDebug|x64.Build.0 = DebugLEXE|x64 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.LtcgRelease|Win32.ActiveCfg = ReleaseLEXE|Win32 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.LtcgRelease|Win32.Build.0 = ReleaseLEXE|Win32 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.LtcgRelease|x64.ActiveCfg = ReleaseLEXE|x64 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.LtcgRelease|x64.Build.0 = ReleaseLEXE|x64 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.StaticDebug|Win32.ActiveCfg = DebugSEXE|Win32 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.StaticDebug|Win32.Build.0 = DebugSEXE|Win32 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.StaticDebug|x64.ActiveCfg = DebugSEXE|x64 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.StaticDebug|x64.Build.0 = DebugSEXE|x64 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.StaticRelease|Win32.ActiveCfg = ReleaseSEXE|Win32 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.StaticRelease|Win32.Build.0 = ReleaseSEXE|Win32 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.StaticRelease|x64.ActiveCfg = ReleaseSEXE|x64 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.StaticRelease|x64.Build.0 = ReleaseSEXE|x64 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.DynDebug|Win32.ActiveCfg = DebugDEXE|Win32 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.DynDebug|Win32.Build.0 = DebugDEXE|Win32 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.DynDebug|x64.ActiveCfg = DebugDEXE|x64 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.DynDebug|x64.Build.0 = DebugDEXE|x64 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.DynRelease|Win32.ActiveCfg = ReleaseDEXE|Win32 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.DynRelease|Win32.Build.0 = ReleaseDEXE|Win32 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.DynRelease|x64.ActiveCfg = ReleaseDEXE|x64 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.DynRelease|x64.Build.0 = ReleaseDEXE|x64 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.LtcgDebug|Win32.ActiveCfg = DebugLEXE|Win32 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.LtcgDebug|Win32.Build.0 = DebugLEXE|Win32 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.LtcgDebug|x64.ActiveCfg = DebugLEXE|x64 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.LtcgDebug|x64.Build.0 = DebugLEXE|x64 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.LtcgRelease|Win32.ActiveCfg = ReleaseLEXE|Win32 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.LtcgRelease|Win32.Build.0 = ReleaseLEXE|Win32 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.LtcgRelease|x64.ActiveCfg = ReleaseLEXE|x64 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.LtcgRelease|x64.Build.0 = ReleaseLEXE|x64 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.StaticDebug|Win32.ActiveCfg = DebugSEXE|Win32 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.StaticDebug|Win32.Build.0 = DebugSEXE|Win32 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.StaticDebug|x64.ActiveCfg = DebugSEXE|x64 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.StaticDebug|x64.Build.0 = DebugSEXE|x64 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.StaticRelease|Win32.ActiveCfg = ReleaseSEXE|Win32 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.StaticRelease|Win32.Build.0 = ReleaseSEXE|Win32 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.StaticRelease|x64.ActiveCfg = ReleaseSEXE|x64 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.StaticRelease|x64.Build.0 = ReleaseSEXE|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/builds/msvc/vs2015/libzmq/libzmq.props b/builds/msvc/vs2015/libzmq/libzmq.props new file mode 100644 index 00000000..227ff7dc --- /dev/null +++ b/builds/msvc/vs2015/libzmq/libzmq.props @@ -0,0 +1,69 @@ + + + + + <_PropertySheetDisplayName>ZeroMQ Library Common Settings + AllRules.ruleset + false + + + + + + + + + + true + + + + + + + $(ProjectDir)..\..\;$(ProjectDir)..\..\..\..\include\;%(AdditionalIncludeDirectories) + false + _CRT_SECURE_NO_WARNINGS;FD_SETSIZE=4096;ZMQ_USE_SELECT;%(PreprocessorDefinitions) + ZMQ_HAVE_OPENPGM;%(PreprocessorDefinitions) + HAVE_LIBSODIUM;%(PreprocessorDefinitions) + HAVE_LIBGSSAPI_KRB5;%(PreprocessorDefinitions) + ZMQ_STATIC;%(PreprocessorDefinitions) + DLL_EXPORT;%(PreprocessorDefinitions) + + + Advapi32.lib;Ws2_32.lib;Rpcrt4.lib;%(AdditionalDependencies) + + + /ignore:4221 %(AdditionalOptions) + + + + + + + + + + + dynamic + + + ltcg + + + static + + + + + + + + + + + + + + + diff --git a/builds/msvc/vs2015/libzmq/libzmq.vcxproj b/builds/msvc/vs2015/libzmq/libzmq.vcxproj new file mode 100644 index 00000000..f9dd8ac3 --- /dev/null +++ b/builds/msvc/vs2015/libzmq/libzmq.vcxproj @@ -0,0 +1,260 @@ + + + + {641C5F36-32EE-4323-B740-992B651CF9D6} + libzmq + v140 + + + + DebugDLL + Win32 + + + ReleaseDLL + Win32 + + + DebugDLL + x64 + + + ReleaseDLL + x64 + + + DebugLTCG + Win32 + + + ReleaseLTCG + Win32 + + + DebugLTCG + x64 + + + ReleaseLTCG + x64 + + + DebugLIB + Win32 + + + ReleaseLIB + Win32 + + + DebugLIB + x64 + + + ReleaseLIB + x64 + + + + StaticLibrary + DynamicLibrary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/builds/msvc/vs2015/libzmq/libzmq.vcxproj.filters b/builds/msvc/vs2015/libzmq/libzmq.vcxproj.filters new file mode 100644 index 00000000..e9acdfc4 --- /dev/null +++ b/builds/msvc/vs2015/libzmq/libzmq.vcxproj.filters @@ -0,0 +1,570 @@ + + + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + + + include + + + include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + resource + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + src\include + + + + + {f7e88c6c-e408-4631-959c-fe3568656d70} + + + {35f0c644-e1d8-4a46-bb33-06bb8b645fff} + + + {90853975-3420-4f06-8be4-4ab3d9792160} + + + {f5e26e9d-c33d-45c1-95e4-0732acd28b59} + + + {e66010e4-a9ea-4e2e-8bc6-12fec14bb009} + + + + + packaging + + + packaging + + + packaging + + + packaging + + + packaging + + + + + packaging + + + + + resource + + + \ No newline at end of file diff --git a/builds/msvc/vs2015/libzmq/libzmq.xml b/builds/msvc/vs2015/libzmq/libzmq.xml new file mode 100644 index 00000000..c5b86681 --- /dev/null +++ b/builds/msvc/vs2015/libzmq/libzmq.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From cdeec4c115b3d2f62417ae57c2cd5f5dcdf348f4 Mon Sep 17 00:00:00 2001 From: Jens Auer Date: Thu, 8 Oct 2015 22:06:33 +0200 Subject: [PATCH 3/4] New options to set send/recv buffer size for TCP sockets. --- doc/zmq_getsockopt.txt | 27 +++++++++++++++++++++++++++ doc/zmq_setsockopt.txt | 27 +++++++++++++++++++++++++++ include/zmq.h | 2 ++ src/options.cpp | 29 +++++++++++++++++++++++++++++ src/options.hpp | 4 ++++ src/stream_engine.cpp | 24 ++++++++++++------------ 6 files changed, 101 insertions(+), 12 deletions(-) diff --git a/doc/zmq_getsockopt.txt b/doc/zmq_getsockopt.txt index 1ca6646e..fb7583f6 100644 --- a/doc/zmq_getsockopt.txt +++ b/doc/zmq_getsockopt.txt @@ -736,6 +736,33 @@ Option value unit:: N/A Default value:: not set Applicable socket types:: all, when using TCP transport +ZMQ_TCP_RECV_BUFFER: Size of the TCP receive buffer +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The 'ZMQ_RECV_BUFFER' specifies the maximum number of bytes which can +be received by an individual syscall to receive data from the TCP +socket. The buffer size is specified as an integer number from 0 (very small) +to 10 (very large). The default value is 3. + + +[horizontal] +Option value type:: int +Option value unit:: N/A +Default value:: 3 +Applicable socket types:: all, when using TCP transport + +ZMQ_TCP_SEND_BUFFER: Size of the TCP receive buffer +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The 'ZMQ_SEND_BUFFER' specifies the maximum number of bytes which can +be sent by an individual syscall to transmit data to the TCP +socket. The buffer size is specified as an integer number from 0 (very small) +to 10 (very large). The default value is 3. + + +[horizontal] +Option value type:: int +Option value unit:: N/A +Default value:: 3 +Applicable socket types:: all, when using TCP transport RETURN VALUE ------------ diff --git a/doc/zmq_setsockopt.txt b/doc/zmq_setsockopt.txt index de79c93b..9921b12d 100644 --- a/doc/zmq_setsockopt.txt +++ b/doc/zmq_setsockopt.txt @@ -1071,6 +1071,33 @@ Option value unit:: boolean Default value:: 1 (true) Applicable socket types:: all, when using TCP transports. +ZMQ_TCP_RECV_BUFFER: Size of the TCP receive buffer +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The 'ZMQ_RECV_BUFFER' specifies the maximum number of bytes which can +be received by an individual syscall to receive data from the TCP +socket. The buffer size is specified as an integer number from 0 (very small) +to 10 (very large). The default value is 3. + + +[horizontal] +Option value type:: int +Option value unit:: N/A +Default value:: 3 +Applicable socket types:: all, when using TCP transport + +ZMQ_TCP_SEND_BUFFER: Size of the TCP receive buffer +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The 'ZMQ_SEND_BUFFER' specifies the maximum number of bytes which can +be sent by an individual syscall to transmit data to the TCP +socket. The buffer size is specified as an integer number from 0 (very small) +to 10 (very large). The default value is 3. + + +[horizontal] +Option value type:: int +Option value unit:: N/A +Default value:: 3 +Applicable socket types:: all, when using TCP transport RETURN VALUE ------------ diff --git a/include/zmq.h b/include/zmq.h index 11a37d71..89b87c44 100644 --- a/include/zmq.h +++ b/include/zmq.h @@ -323,6 +323,8 @@ ZMQ_EXPORT uint32_t zmq_msg_routing_id (zmq_msg_t *msg); #define ZMQ_CONNECT_TIMEOUT 79 #define ZMQ_TCP_RETRANSMIT_TIMEOUT 80 #define ZMQ_THREAD_SAFE 81 +#define ZMQ_TCP_RECV_BUFFER 82 +#define ZMQ_TCP_SEND_BUFFER 83 /* Message options */ #define ZMQ_MORE 1 diff --git a/src/options.cpp b/src/options.cpp index 67dfe025..5c6e8406 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -28,6 +28,7 @@ */ #include +#include #include "options.hpp" #include "err.hpp" @@ -65,6 +66,8 @@ zmq::options_t::options_t () : tcp_keepalive_cnt (-1), tcp_keepalive_idle (-1), tcp_keepalive_intvl (-1), + tcp_recv_buffer_size (3), + tcp_send_buffer_size (3), mechanism (ZMQ_NULL), as_server (0), gss_plaintext (false), @@ -280,6 +283,18 @@ int zmq::options_t::setsockopt (int option_, const void *optval_, } break; + case ZMQ_TCP_RECV_BUFFER: + if (is_int && (value >= 0 && value <= 10) ) { + tcp_send_buffer_size = static_cast(std::pow(2, value)) * 1024; + } + break; + + case ZMQ_TCP_SEND_BUFFER: + if (is_int && (value >= 0 && value <= 10) ) { + tcp_send_buffer_size = static_cast(std::pow(2, value)) * 1024; + } + break; + case ZMQ_IMMEDIATE: if (is_int && (value == 0 || value == 1)) { immediate = value; @@ -790,6 +805,20 @@ int zmq::options_t::getsockopt (int option_, void *optval_, size_t *optvallen_) } break; + case ZMQ_TCP_SEND_BUFFER: + if (is_int) { + *value = tcp_send_buffer_size; + return 0; + } + break; + + case ZMQ_TCP_RECV_BUFFER: + if (is_int) { + *value = tcp_recv_buffer_size; + return 0; + } + break; + case ZMQ_MECHANISM: if (is_int) { *value = mechanism; diff --git a/src/options.hpp b/src/options.hpp index 288a1b36..be04ec64 100644 --- a/src/options.hpp +++ b/src/options.hpp @@ -156,6 +156,10 @@ namespace zmq typedef std::vector tcp_accept_filters_t; tcp_accept_filters_t tcp_accept_filters; + // TCO buffer sizes + int tcp_recv_buffer_size; + int tcp_send_buffer_size; + // IPC accept() filters # if defined ZMQ_HAVE_SO_PEERCRED || defined ZMQ_HAVE_LOCAL_PEERCRED bool zap_ipc_creds; diff --git a/src/stream_engine.cpp b/src/stream_engine.cpp index 44814802..03c1f9a7 100644 --- a/src/stream_engine.cpp +++ b/src/stream_engine.cpp @@ -203,10 +203,10 @@ void zmq::stream_engine_t::plug (io_thread_t *io_thread_, if (options.raw_socket) { // no handshaking for raw sock, instantiate raw encoder and decoders - encoder = new (std::nothrow) raw_encoder_t (out_batch_size); + encoder = new (std::nothrow) raw_encoder_t (options.tcp_send_buffer_size); alloc_assert (encoder); - decoder = new (std::nothrow) raw_decoder_t (in_batch_size); + decoder = new (std::nothrow) raw_decoder_t (options.tcp_recv_buffer_size); alloc_assert (decoder); // disable handshaking for raw socket @@ -385,12 +385,12 @@ void zmq::stream_engine_t::out_event () outpos = NULL; outsize = encoder->encode (&outpos, 0); - while (outsize < out_batch_size) { + while (outsize < options.tcp_send_buffer_size) { if ((this->*next_msg) (&tx_msg) == -1) break; encoder->load_msg (&tx_msg); unsigned char *bufptr = outpos + outsize; - size_t n = encoder->encode (&bufptr, out_batch_size - outsize); + size_t n = encoder->encode (&bufptr, options.tcp_send_buffer_size - outsize); zmq_assert (n > 0); if (outpos == NULL) outpos = bufptr; @@ -587,10 +587,10 @@ bool zmq::stream_engine_t::handshake () return false; } - encoder = new (std::nothrow) v1_encoder_t (out_batch_size); + encoder = new (std::nothrow) v1_encoder_t (options.tcp_send_buffer_size); alloc_assert (encoder); - decoder = new (std::nothrow) v1_decoder_t (in_batch_size, options.maxmsgsize); + decoder = new (std::nothrow) v1_decoder_t (options.tcp_recv_buffer_size, options.maxmsgsize); alloc_assert (decoder); // We have already sent the message header. @@ -635,11 +635,11 @@ bool zmq::stream_engine_t::handshake () } encoder = new (std::nothrow) v1_encoder_t ( - out_batch_size); + options.tcp_send_buffer_size); alloc_assert (encoder); decoder = new (std::nothrow) v1_decoder_t ( - in_batch_size, options.maxmsgsize); + options.tcp_recv_buffer_size, options.maxmsgsize); alloc_assert (decoder); } else @@ -650,19 +650,19 @@ bool zmq::stream_engine_t::handshake () return false; } - encoder = new (std::nothrow) v2_encoder_t (out_batch_size); + encoder = new (std::nothrow) v2_encoder_t (options.tcp_send_buffer_size); alloc_assert (encoder); decoder = new (std::nothrow) v2_decoder_t ( - in_batch_size, options.maxmsgsize); + options.tcp_recv_buffer_size, options.maxmsgsize); alloc_assert (decoder); } else { - encoder = new (std::nothrow) v2_encoder_t (out_batch_size); + encoder = new (std::nothrow) v2_encoder_t (options.tcp_send_buffer_size); alloc_assert (encoder); decoder = new (std::nothrow) v2_decoder_t ( - in_batch_size, options.maxmsgsize); + options.tcp_recv_buffer_size, options.maxmsgsize); alloc_assert (decoder); if (options.mechanism == ZMQ_NULL From 908d6b67401509de724c509f1c4b09187596e177 Mon Sep 17 00:00:00 2001 From: Jens Auer Date: Sun, 8 Nov 2015 21:48:36 +0100 Subject: [PATCH 4/4] Update options.cpp Fixed ZMQ_TCP_RECV_BUFFER set case. --- src/options.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/options.cpp b/src/options.cpp index 5c6e8406..e4bc011a 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -285,7 +285,7 @@ int zmq::options_t::setsockopt (int option_, const void *optval_, case ZMQ_TCP_RECV_BUFFER: if (is_int && (value >= 0 && value <= 10) ) { - tcp_send_buffer_size = static_cast(std::pow(2, value)) * 1024; + tcp_recv_buffer_size = static_cast(std::pow(2, value)) * 1024; } break;