0
0
mirror of https://github.com/zeromq/libzmq.git synced 2024-12-29 00:26:36 +08:00

Merge branch 'master' of github.com:zeromq/libzmq

This commit is contained in:
Mário Kašuba 2015-08-02 04:56:55 +02:00
commit 7604e1f7d5
308 changed files with 7533 additions and 2643 deletions

7
.gitignore vendored
View File

@ -22,6 +22,9 @@ autom4te.cache
*~ *~
.*~ .*~
curve_keygen curve_keygen
test_heartbeats
test_msg_ffn
test_socketopt_hwm
test_resource test_resource
test_ipc_wildcard test_ipc_wildcard
test_stream_empty test_stream_empty
@ -52,6 +55,8 @@ test_immediate
test_term_endpoint test_term_endpoint
test_router_mandatory test_router_mandatory
test_disconnect_inproc test_disconnect_inproc
test_unbind_inproc
test_unbind_wildcard
test_raw_sock test_raw_sock
test_disconnect_inproc test_disconnect_inproc
test_ctx_options test_ctx_options
@ -74,6 +79,8 @@ test_linger
test_security_null test_security_null
test_security_plain test_security_plain
test_proxy test_proxy
test_proxy_single_socket
test_proxy_terminate
test_abstract_ipc test_abstract_ipc
test_filter_ipc test_filter_ipc
test_connect_delay_tipc test_connect_delay_tipc

View File

@ -86,6 +86,7 @@ Philip Kovacs
Pieter Hintjens Pieter Hintjens
Piotr Trojanek Piotr Trojanek
Richard Newton Richard Newton
Rik van der Heijden
Robert G. Jakabosky Robert G. Jakabosky
Sebastian Otaegui Sebastian Otaegui
Stefan Radomski Stefan Radomski

View File

@ -294,8 +294,8 @@ if(MSVC)
set(OPENPGM_INCLUDE_DIRS ${OPENPGM_ROOT}/include) set(OPENPGM_INCLUDE_DIRS ${OPENPGM_ROOT}/include)
set(OPENPGM_LIBRARY_DIRS ${OPENPGM_ROOT}/lib) set(OPENPGM_LIBRARY_DIRS ${OPENPGM_ROOT}/lib)
set(OPENPGM_LIBRARIES set(OPENPGM_LIBRARIES
optimized libpgm${_zmq_COMPILER}-mt-${OPENPGM_VERSION_MAJOR}_${OPENPGM_VERSION_MINOR}_${OPENPGM_VERSION_MICRO}.lib optimized libpgm-${CMAKE_VS_PLATFORM_TOOLSET}-mt-${OPENPGM_VERSION_MAJOR}_${OPENPGM_VERSION_MINOR}_${OPENPGM_VERSION_MICRO}.lib
debug libpgm${_zmq_COMPILER}-mt-gd-${OPENPGM_VERSION_MAJOR}_${OPENPGM_VERSION_MINOR}_${OPENPGM_VERSION_MICRO}.lib) debug libpgm-${CMAKE_VS_PLATFORM_TOOLSET}-mt-gd-${OPENPGM_VERSION_MAJOR}_${OPENPGM_VERSION_MINOR}_${OPENPGM_VERSION_MICRO}.lib)
endif() endif()
else() else()
if(WITH_OPENPGM) if(WITH_OPENPGM)
@ -435,7 +435,8 @@ set(cxx-sources
xpub.cpp xpub.cpp
xsub.cpp xsub.cpp
zmq.cpp zmq.cpp
zmq_utils.cpp) zmq_utils.cpp
decoder_allocators.cpp)
set(rc-sources version.rc) set(rc-sources version.rc)
@ -578,15 +579,15 @@ if(MSVC)
target_link_libraries(libzmq ${OPTIONAL_LIBRARIES}) target_link_libraries(libzmq ${OPTIONAL_LIBRARIES})
set_target_properties(libzmq PROPERTIES set_target_properties(libzmq PROPERTIES
PUBLIC_HEADER "${public_headers}" PUBLIC_HEADER "${public_headers}"
RELEASE_POSTFIX "${_zmq_COMPILER}-mt-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}" RELEASE_POSTFIX "-${CMAKE_VS_PLATFORM_TOOLSET}-mt-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
DEBUG_POSTFIX "${_zmq_COMPILER}-mt-gd-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}" DEBUG_POSTFIX "-${CMAKE_VS_PLATFORM_TOOLSET}-mt-gd-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin"
COMPILE_DEFINITIONS "DLL_EXPORT") COMPILE_DEFINITIONS "DLL_EXPORT")
add_library(libzmq-static STATIC ${sources}) add_library(libzmq-static STATIC ${sources})
set_target_properties(libzmq-static PROPERTIES set_target_properties(libzmq-static PROPERTIES
PUBLIC_HEADER "${public_headers}" PUBLIC_HEADER "${public_headers}"
RELEASE_POSTFIX "${_zmq_COMPILER}-mt-s-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}" RELEASE_POSTFIX "-${CMAKE_VS_PLATFORM_TOOLSET}-mt-s-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
DEBUG_POSTFIX "${_zmq_COMPILER}-mt-sgd-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}" DEBUG_POSTFIX "-${CMAKE_VS_PLATFORM_TOOLSET}-mt-sgd-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
COMPILE_FLAGS "/D ZMQ_STATIC" COMPILE_FLAGS "/D ZMQ_STATIC"
OUTPUT_NAME "libzmq") OUTPUT_NAME "libzmq")
else() else()
@ -648,6 +649,12 @@ set(perf-tools local_lat
inproc_thr) inproc_thr)
if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") # Why? if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") # Why?
option(WITH_PERF_TOOL "Build with perf-tools" ON)
else()
option(WITH_PERF_TOOL "Build with perf-tools" OFF)
endif()
if(WITH_PERF_TOOL)
foreach(perf-tool ${perf-tools}) foreach(perf-tool ${perf-tools})
add_executable(${perf-tool} perf/${perf-tool}.cpp) add_executable(${perf-tool} perf/${perf-tool}.cpp)
target_link_libraries(${perf-tool} libzmq) target_link_libraries(${perf-tool} libzmq)
@ -698,7 +705,7 @@ if(MSVC)
ARCHIVE DESTINATION lib ARCHIVE DESTINATION lib
PUBLIC_HEADER DESTINATION include PUBLIC_HEADER DESTINATION include
COMPONENT SDK) COMPONENT SDK)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/bin/libzmq${_zmq_COMPILER}-mt-gd-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}.pdb DESTINATION lib install(FILES ${CMAKE_CURRENT_BINARY_DIR}/bin/libzmq-${CMAKE_VS_PLATFORM_TOOLSET}-mt-gd-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}.pdb DESTINATION lib
COMPONENT SDK) COMPONENT SDK)
else() else()
install(TARGETS libzmq install(TARGETS libzmq

View File

@ -207,7 +207,10 @@ src_libzmq_la_SOURCES = \
src/ypipe_conflate.hpp \ src/ypipe_conflate.hpp \
src/yqueue.hpp \ src/yqueue.hpp \
src/zmq.cpp \ src/zmq.cpp \
src/zmq_utils.cpp src/zmq_utils.cpp \
src/decoder_allocators.hpp \
src/decoder_allocators.cpp
if ON_MINGW if ON_MINGW
src_libzmq_la_LDFLAGS = \ src_libzmq_la_LDFLAGS = \
@ -308,6 +311,7 @@ test_apps = \
tests/test_sub_forward \ tests/test_sub_forward \
tests/test_invalid_rep \ tests/test_invalid_rep \
tests/test_msg_flags \ tests/test_msg_flags \
tests/test_msg_ffn \
tests/test_connect_resolve \ tests/test_connect_resolve \
tests/test_immediate \ tests/test_immediate \
tests/test_last_endpoint \ tests/test_last_endpoint \
@ -323,6 +327,8 @@ test_apps = \
tests/test_stream_disconnect \ tests/test_stream_disconnect \
tests/test_stream_timeout \ tests/test_stream_timeout \
tests/test_disconnect_inproc \ tests/test_disconnect_inproc \
tests/test_unbind_inproc \
tests/test_unbind_wildcard \
tests/test_ctx_options \ tests/test_ctx_options \
tests/test_ctx_destroy \ tests/test_ctx_destroy \
tests/test_security_null \ tests/test_security_null \
@ -340,6 +346,8 @@ test_apps = \
tests/test_inproc_connect \ tests/test_inproc_connect \
tests/test_issue_566 \ tests/test_issue_566 \
tests/test_proxy \ tests/test_proxy \
tests/test_proxy_single_socket \
tests/test_proxy_terminate \
tests/test_many_sockets \ tests/test_many_sockets \
tests/test_ipc_wildcard \ tests/test_ipc_wildcard \
tests/test_diffserv \ tests/test_diffserv \
@ -354,7 +362,10 @@ test_apps = \
tests/test_client_server \ tests/test_client_server \
tests/test_server_drop_more \ tests/test_server_drop_more \
tests/test_client_drop_more \ tests/test_client_drop_more \
tests/test_thread_safe tests/test_thread_safe \
tests/test_socketopt_hwm \
tests/test_heartbeats \
tests/test_stream_exceeds_buffer
tests_test_system_SOURCES = tests/test_system.cpp tests_test_system_SOURCES = tests/test_system.cpp
tests_test_system_LDADD = src/libzmq.la tests_test_system_LDADD = src/libzmq.la
@ -397,6 +408,9 @@ tests_test_invalid_rep_LDADD = src/libzmq.la
tests_test_msg_flags_SOURCES = tests/test_msg_flags.cpp tests_test_msg_flags_SOURCES = tests/test_msg_flags.cpp
tests_test_msg_flags_LDADD = src/libzmq.la tests_test_msg_flags_LDADD = src/libzmq.la
tests_test_msg_ffn_SOURCES = tests/test_msg_ffn.cpp
tests_test_msg_ffn_LDADD = src/libzmq.la
tests_test_connect_resolve_SOURCES = tests/test_connect_resolve.cpp tests_test_connect_resolve_SOURCES = tests/test_connect_resolve.cpp
tests_test_connect_resolve_LDADD = src/libzmq.la tests_test_connect_resolve_LDADD = src/libzmq.la
@ -442,6 +456,12 @@ tests_test_stream_disconnect_LDADD = src/libzmq.la
tests_test_disconnect_inproc_SOURCES = tests/test_disconnect_inproc.cpp tests_test_disconnect_inproc_SOURCES = tests/test_disconnect_inproc.cpp
tests_test_disconnect_inproc_LDADD = src/libzmq.la tests_test_disconnect_inproc_LDADD = src/libzmq.la
tests_test_unbind_inproc_SOURCES = tests/test_unbind_inproc.cpp
tests_test_unbind_inproc_LDADD = src/libzmq.la
tests_test_unbind_wildcard_SOURCES = tests/test_unbind_wildcard.cpp
tests_test_unbind_wildcard_LDADD = src/libzmq.la
tests_test_ctx_options_SOURCES = tests/test_ctx_options.cpp tests_test_ctx_options_SOURCES = tests/test_ctx_options.cpp
tests_test_ctx_options_LDADD = src/libzmq.la tests_test_ctx_options_LDADD = src/libzmq.la
@ -493,6 +513,12 @@ tests_test_issue_566_LDADD = src/libzmq.la
tests_test_proxy_SOURCES = tests/test_proxy.cpp tests_test_proxy_SOURCES = tests/test_proxy.cpp
tests_test_proxy_LDADD = src/libzmq.la tests_test_proxy_LDADD = src/libzmq.la
tests_test_proxy_single_socket_SOURCES = tests/test_proxy_single_socket.cpp
tests_test_proxy_single_socket_LDADD = src/libzmq.la
tests_test_proxy_terminate_SOURCES = tests/test_proxy_terminate.cpp
tests_test_proxy_terminate_LDADD = src/libzmq.la
tests_test_many_sockets_SOURCES = tests/test_many_sockets.cpp tests_test_many_sockets_SOURCES = tests/test_many_sockets.cpp
tests_test_many_sockets_LDADD = src/libzmq.la tests_test_many_sockets_LDADD = src/libzmq.la
@ -538,7 +564,14 @@ tests_test_client_drop_more_LDADD = src/libzmq.la
tests_test_thread_safe_SOURCES = tests/test_thread_safe.cpp tests_test_thread_safe_SOURCES = tests/test_thread_safe.cpp
tests_test_thread_safe_LDADD = src/libzmq.la tests_test_thread_safe_LDADD = src/libzmq.la
tests_test_socketopt_hwm_SOURCES = tests/test_sockopt_hwm.cpp
tests_test_socketopt_hwm_LDADD = src/libzmq.la
tests_test_heartbeats_SOURCES = tests/test_heartbeats.cpp
tests_test_heartbeats_LDADD = src/libzmq.la
tests_test_stream_exceeds_buffer_SOURCES = tests/test_stream_exceeds_buffer.cpp
tests_test_stream_exceeds_buffer_LDADD = src/libzmq.la
if !ON_MINGW if !ON_MINGW
if !ON_CYGWIN if !ON_CYGWIN
@ -627,7 +660,7 @@ check_PROGRAMS = ${test_apps}
# Run the test cases # Run the test cases
TESTS = $(test_apps) TESTS = $(test_apps)
XFAIL_TESTS = XFAIL_TESTS =
if !ON_LINUX if !ON_LINUX
XFAIL_TESTS += tests/test_abstract_ipc XFAIL_TESTS += tests/test_abstract_ipc

View File

@ -4,9 +4,9 @@
## Welcome ## Welcome
The 0MQ lightweight messaging kernel is a library which extends the The ZeroMQ lightweight messaging kernel is a library which extends the
standard socket interfaces with features traditionally provided by standard socket interfaces with features traditionally provided by
specialised messaging middleware products. 0MQ sockets provide an specialised messaging middleware products. ZeroMQ sockets provide an
abstraction of asynchronous message queues, multiple messaging patterns, abstraction of asynchronous message queues, multiple messaging patterns,
message filtering (subscriptions), seamless access to multiple transport message filtering (subscriptions), seamless access to multiple transport
protocols and more. protocols and more.
@ -19,7 +19,7 @@ See the INSTALL file included with the distribution.
## Resources ## Resources
Extensive documentation is provided with the distribution. Refer to Extensive documentation is provided with the distribution. Refer to
doc/zmq.html, or "man zmq" after you have installed 0MQ on your system. doc/zmq.html, or "man zmq" after you have installed libzmq on your system.
Website: http://www.zeromq.org/ Website: http://www.zeromq.org/
@ -28,11 +28,29 @@ Announcements mailing list: zeromq-announce@lists.zeromq.org
Git repository: http://github.com/zeromq/libzmq Git repository: http://github.com/zeromq/libzmq
0MQ developers can also be found on the IRC channel #zeromq, on the ZeroMQ developers can also be found on the IRC channel #zeromq, on the
Freenode network (irc.freenode.net). Freenode network (irc.freenode.net).
## Copying ## License
Free use of this software is granted under the terms of the GNU Lesser General The project license is specified in COPYING and COPYING.LESSER.
Public License (LGPL). For details see the files `COPYING` and `COPYING.LESSER`
included with the 0MQ distribution. libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License (LGPL) as published
by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
As a special exception, the Contributors give you permission to link
this library with independent modules to produce an executable,
regardless of the license terms of these independent modules, and to
copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.

View File

@ -20,10 +20,14 @@
# Script to generate all required files from fresh git checkout. # Script to generate all required files from fresh git checkout.
command -v libtool >/dev/null 2>&1 # Debian and Ubuntu do not shipt libtool anymore, but OSX does not ship libtoolize.
command -v libtoolize >/dev/null 2>&1
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "autogen.sh: error: could not find libtool. libtool is required to run autogen.sh." 1>&2 command -v libtool >/dev/null 2>&1
exit 1 if [ $? -ne 0 ]; then
echo "autogen.sh: error: could not find libtool. libtool is required to run autogen.sh." 1>&2
exit 1
fi
fi fi
command -v autoreconf >/dev/null 2>&1 command -v autoreconf >/dev/null 2>&1

View File

@ -6,13 +6,3 @@ string(REGEX REPLACE ".*#define ZMQ_VERSION_PATCH ([0-9]+).*" "\\1" ZMQ_VERSION_
set(ZMQ_VERSION "${ZMQ_VERSION_MAJOR}.${ZMQ_VERSION_MINOR}.${ZMQ_VERSION_PATCH}") set(ZMQ_VERSION "${ZMQ_VERSION_MAJOR}.${ZMQ_VERSION_MINOR}.${ZMQ_VERSION_PATCH}")
message(STATUS "Detected ZMQ Version - ${ZMQ_VERSION}") message(STATUS "Detected ZMQ Version - ${ZMQ_VERSION}")
if(MSVC_VERSION MATCHES "1700")
set(_zmq_COMPILER "-v110")
elseif(MSVC10)
set(_zmq_COMPILER "-v100")
elseif(MSVC90)
set(_zmq_COMPILER "-v90")
else()
set(_zmq_COMPILER "")
endif()

View File

@ -86,14 +86,4 @@
#cmakedefine ZMQ_HAVE_WINDOWS #cmakedefine ZMQ_HAVE_WINDOWS
#ifdef ZMQ_HAVE_WINDOWS
#if defined _WIN32_WINNT && _WIN32_WINNT < 0x0600
#undef _WIN32_WINNT
#endif
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600
#endif
#endif
#endif #endif

View File

@ -1,18 +1,27 @@
/* /*
Copyright (c) 2007-2011 iMatix Corporation Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -29,13 +38,4 @@
#define ZMQ_HAVE_WINDOWS #define ZMQ_HAVE_WINDOWS
#if defined _WIN32_WINNT && _WIN32_WINNT < 0x0600
#undef _WIN32_WINNT
#endif
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600
#endif
#endif #endif

View File

@ -1,18 +1,27 @@
/* /*
Copyright (c) 2007-2011 iMatix Corporation Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -29,12 +38,4 @@
#define ZMQ_HAVE_WINDOWS #define ZMQ_HAVE_WINDOWS
#if defined _WIN32_WINNT && _WIN32_WINNT < 0x0600
#undef _WIN32_WINNT
#endif
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600
#endif
#endif #endif

View File

@ -82,6 +82,7 @@
<ClInclude Include="..\..\..\..\src\curve_client.hpp" /> <ClInclude Include="..\..\..\..\src\curve_client.hpp" />
<ClInclude Include="..\..\..\..\src\curve_server.hpp" /> <ClInclude Include="..\..\..\..\src\curve_server.hpp" />
<ClInclude Include="..\..\..\..\src\decoder.hpp" /> <ClInclude Include="..\..\..\..\src\decoder.hpp" />
<ClInclude Include="..\..\..\..\src\decoder_allocators.hpp" />
<ClInclude Include="..\..\..\..\src\devpoll.hpp" /> <ClInclude Include="..\..\..\..\src\devpoll.hpp" />
<ClInclude Include="..\..\..\..\src\dist.hpp" /> <ClInclude Include="..\..\..\..\src\dist.hpp" />
<ClInclude Include="..\..\..\..\src\encoder.hpp" /> <ClInclude Include="..\..\..\..\src\encoder.hpp" />
@ -168,6 +169,7 @@
<ClCompile Include="..\..\..\..\src\curve_client.cpp" /> <ClCompile Include="..\..\..\..\src\curve_client.cpp" />
<ClCompile Include="..\..\..\..\src\curve_server.cpp" /> <ClCompile Include="..\..\..\..\src\curve_server.cpp" />
<ClCompile Include="..\..\..\..\src\dealer.cpp" /> <ClCompile Include="..\..\..\..\src\dealer.cpp" />
<ClCompile Include="..\..\..\..\src\decoder_allocators.cpp" />
<ClCompile Include="..\..\..\..\src\devpoll.cpp" /> <ClCompile Include="..\..\..\..\src\devpoll.cpp" />
<ClCompile Include="..\..\..\..\src\dist.cpp" /> <ClCompile Include="..\..\..\..\src\dist.cpp" />
<ClCompile Include="..\..\..\..\src\epoll.cpp" /> <ClCompile Include="..\..\..\..\src\epoll.cpp" />

View File

@ -235,6 +235,9 @@
<ClCompile Include="..\..\..\..\src\mailbox_safe.cpp"> <ClCompile Include="..\..\..\..\src\mailbox_safe.cpp">
<Filter>src</Filter> <Filter>src</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\..\src\decoder_allocators.cpp">
<Filter>src</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\..\..\include\zmq_utils.h"> <ClInclude Include="..\..\..\..\include\zmq_utils.h">
@ -513,6 +516,9 @@
<ClInclude Include="..\..\..\..\src\condition_variable.hpp"> <ClInclude Include="..\..\..\..\src\condition_variable.hpp">
<Filter>src\include</Filter> <Filter>src\include</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\..\..\src\decoder_allocators.hpp">
<Filter>src\include</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Filter Include="include"> <Filter Include="include">

View File

@ -82,6 +82,7 @@
<ClInclude Include="..\..\..\..\src\curve_client.hpp" /> <ClInclude Include="..\..\..\..\src\curve_client.hpp" />
<ClInclude Include="..\..\..\..\src\curve_server.hpp" /> <ClInclude Include="..\..\..\..\src\curve_server.hpp" />
<ClInclude Include="..\..\..\..\src\decoder.hpp" /> <ClInclude Include="..\..\..\..\src\decoder.hpp" />
<ClInclude Include="..\..\..\..\src\decoder_allocators.hpp" />
<ClInclude Include="..\..\..\..\src\devpoll.hpp" /> <ClInclude Include="..\..\..\..\src\devpoll.hpp" />
<ClInclude Include="..\..\..\..\src\dist.hpp" /> <ClInclude Include="..\..\..\..\src\dist.hpp" />
<ClInclude Include="..\..\..\..\src\encoder.hpp" /> <ClInclude Include="..\..\..\..\src\encoder.hpp" />
@ -168,6 +169,7 @@
<ClCompile Include="..\..\..\..\src\curve_client.cpp" /> <ClCompile Include="..\..\..\..\src\curve_client.cpp" />
<ClCompile Include="..\..\..\..\src\curve_server.cpp" /> <ClCompile Include="..\..\..\..\src\curve_server.cpp" />
<ClCompile Include="..\..\..\..\src\dealer.cpp" /> <ClCompile Include="..\..\..\..\src\dealer.cpp" />
<ClCompile Include="..\..\..\..\src\decoder_allocators.cpp" />
<ClCompile Include="..\..\..\..\src\devpoll.cpp" /> <ClCompile Include="..\..\..\..\src\devpoll.cpp" />
<ClCompile Include="..\..\..\..\src\dist.cpp" /> <ClCompile Include="..\..\..\..\src\dist.cpp" />
<ClCompile Include="..\..\..\..\src\epoll.cpp" /> <ClCompile Include="..\..\..\..\src\epoll.cpp" />

View File

@ -235,6 +235,9 @@
<ClCompile Include="..\..\..\..\src\mailbox_safe.cpp"> <ClCompile Include="..\..\..\..\src\mailbox_safe.cpp">
<Filter>src</Filter> <Filter>src</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\..\src\decoder_allocators.cpp">
<Filter>src</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\..\..\include\zmq_utils.h"> <ClInclude Include="..\..\..\..\include\zmq_utils.h">
@ -513,6 +516,9 @@
<ClInclude Include="..\..\..\..\src\condition_variable.hpp"> <ClInclude Include="..\..\..\..\src\condition_variable.hpp">
<Filter>src\include</Filter> <Filter>src\include</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\..\..\src\decoder_allocators.hpp">
<Filter>src\include</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Filter Include="include"> <Filter Include="include">

View File

@ -82,6 +82,7 @@
<ClInclude Include="..\..\..\..\src\curve_client.hpp" /> <ClInclude Include="..\..\..\..\src\curve_client.hpp" />
<ClInclude Include="..\..\..\..\src\curve_server.hpp" /> <ClInclude Include="..\..\..\..\src\curve_server.hpp" />
<ClInclude Include="..\..\..\..\src\decoder.hpp" /> <ClInclude Include="..\..\..\..\src\decoder.hpp" />
<ClInclude Include="..\..\..\..\src\decoder_allocators.hpp" />
<ClInclude Include="..\..\..\..\src\devpoll.hpp" /> <ClInclude Include="..\..\..\..\src\devpoll.hpp" />
<ClInclude Include="..\..\..\..\src\dist.hpp" /> <ClInclude Include="..\..\..\..\src\dist.hpp" />
<ClInclude Include="..\..\..\..\src\encoder.hpp" /> <ClInclude Include="..\..\..\..\src\encoder.hpp" />
@ -168,6 +169,7 @@
<ClCompile Include="..\..\..\..\src\curve_client.cpp" /> <ClCompile Include="..\..\..\..\src\curve_client.cpp" />
<ClCompile Include="..\..\..\..\src\curve_server.cpp" /> <ClCompile Include="..\..\..\..\src\curve_server.cpp" />
<ClCompile Include="..\..\..\..\src\dealer.cpp" /> <ClCompile Include="..\..\..\..\src\dealer.cpp" />
<ClCompile Include="..\..\..\..\src\decoder_allocators.cpp" />
<ClCompile Include="..\..\..\..\src\devpoll.cpp" /> <ClCompile Include="..\..\..\..\src\devpoll.cpp" />
<ClCompile Include="..\..\..\..\src\dist.cpp" /> <ClCompile Include="..\..\..\..\src\dist.cpp" />
<ClCompile Include="..\..\..\..\src\epoll.cpp" /> <ClCompile Include="..\..\..\..\src\epoll.cpp" />

View File

@ -235,6 +235,9 @@
<ClCompile Include="..\..\..\..\src\mailbox_safe.cpp"> <ClCompile Include="..\..\..\..\src\mailbox_safe.cpp">
<Filter>src</Filter> <Filter>src</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\..\src\decoder_allocators.cpp">
<Filter>src</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\..\..\include\zmq_utils.h"> <ClInclude Include="..\..\..\..\include\zmq_utils.h">
@ -513,6 +516,9 @@
<ClInclude Include="..\..\..\..\src\condition_variable.hpp"> <ClInclude Include="..\..\..\..\src\condition_variable.hpp">
<Filter>src\include</Filter> <Filter>src\include</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\..\..\src\decoder_allocators.hpp">
<Filter>src\include</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Filter Include="include"> <Filter Include="include">

View File

@ -26,15 +26,11 @@ if [[ $ANDROID_BUILD_CLEAN ]]; then
fi fi
## ##
# Build libsodium from latest release tarball # Build libsodium from latest master branch
(android_build_verify_so "libsodium.so" &> /dev/null) || { (android_build_verify_so "libsodium.so" &> /dev/null) || {
rm -rf "${cache}/libsodium" rm -rf "${cache}/libsodium"
(cd "${cache}" && mkdir libsodium \ (cd "${cache}" && git clone git://github.com/jedisct1/libsodium.git) || exit 1
&& wget https://download.libsodium.org/libsodium/releases/LATEST.tar.gz\
-O "${cache}/libsodium.tar.gz" \
&& tar -C libsodium -xf libsodium.tar.gz --strip=1) || exit 1
(cd "${cache}/libsodium" && ./autogen.sh \ (cd "${cache}/libsodium" && ./autogen.sh \
&& ./configure "${ANDROID_BUILD_OPTS[@]}" --disable-soname-versions \ && ./configure "${ANDROID_BUILD_OPTS[@]}" --disable-soname-versions \
&& make \ && make \

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -30,7 +40,7 @@ int main (void)
setup_test_environment (); setup_test_environment ();
void *ctx = zmq_ctx_new (); void *ctx = zmq_ctx_new ();
assert (ctx); assert (ctx);
// Create and bind pull socket to receive messages // Create and bind pull socket to receive messages
void *pull = zmq_socket (ctx, ZMQ_PULL); void *pull = zmq_socket (ctx, ZMQ_PULL);
assert (pull); assert (pull);
@ -54,11 +64,11 @@ int main (void)
int count; int count;
for (count = 0; count < NUM_MESSAGES; count++) for (count = 0; count < NUM_MESSAGES; count++)
zmq_send (push, "Hello", 5, 0); zmq_send (push, "Hello", 5, 0);
zmq_close (push); zmq_close (push);
zmq_ctx_destroy (child_ctx); zmq_ctx_destroy (child_ctx);
exit (0); exit (0);
} }
else { else {
// Parent process // Parent process
alarm(TIMEOUT_SECS); // Set upper limit on runtime alarm(TIMEOUT_SECS); // Set upper limit on runtime
@ -72,7 +82,7 @@ int main (void)
int child_status; int child_status;
while (true) { while (true) {
rc = waitpid (pid, &child_status, 0); rc = waitpid (pid, &child_status, 0);
if (rc == -1 && errno == EINTR) if (rc == -1 && errno == EINTR)
continue; continue;
assert (rc > 0); assert (rc > 0);
// Verify the status code of the child was zero // Verify the status code of the child was zero

View File

@ -31,9 +31,10 @@ AC_SUBST(PACKAGE_VERSION)
# ZeroMQ version 3.0: 2:0:0 (ABI version 2) # ZeroMQ version 3.0: 2:0:0 (ABI version 2)
# ZeroMQ version 3.1: 3:0:0 (ABI version 3) # ZeroMQ version 3.1: 3:0:0 (ABI version 3)
# ZeroMQ version 4.0: 4:0:0 (ABI version 4) # ZeroMQ version 4.0: 4:0:0 (ABI version 4)
# ZeroMQ version 4.1: 5:0:0 (ABI version 5)
# #
# libzmq -version-info current:revision:age # libzmq -version-info current:revision:age
LTVER="4:0:0" LTVER="5:0:0"
AC_SUBST(LTVER) AC_SUBST(LTVER)
# Take a copy of original flags # Take a copy of original flags
@ -225,7 +226,7 @@ case "${host_os}" in
AC_DEFINE(ZMQ_FORCE_MUTEXES, 1, [Force to use mutexes]) AC_DEFINE(ZMQ_FORCE_MUTEXES, 1, [Force to use mutexes])
fi fi
;; ;;
*openbsd*) *openbsd*|*bitrig*)
# Define on OpenBSD to enable all library features # Define on OpenBSD to enable all library features
CPPFLAGS="-D_BSD_SOURCE $CPPFLAGS" CPPFLAGS="-D_BSD_SOURCE $CPPFLAGS"
AC_DEFINE(ZMQ_HAVE_OPENBSD, 1, [Have OpenBSD OS]) AC_DEFINE(ZMQ_HAVE_OPENBSD, 1, [Have OpenBSD OS])
@ -245,7 +246,7 @@ case "${host_os}" in
LIBZMQ_CHECK_LANG_FLAG_PREPEND([-Ae]) LIBZMQ_CHECK_LANG_FLAG_PREPEND([-Ae])
AC_CHECK_FUNCS(gethrtime) AC_CHECK_FUNCS(gethrtime)
;; ;;
*mingw32*) *mingw*)
AC_DEFINE(ZMQ_HAVE_WINDOWS, 1, [Have Windows OS]) AC_DEFINE(ZMQ_HAVE_WINDOWS, 1, [Have Windows OS])
AC_DEFINE(ZMQ_HAVE_MINGW32, 1, [Have MinGW32]) AC_DEFINE(ZMQ_HAVE_MINGW32, 1, [Have MinGW32])
AC_CHECK_HEADERS(windows.h) AC_CHECK_HEADERS(windows.h)
@ -265,6 +266,9 @@ case "${host_os}" in
if test "x$enable_static" = "xyes"; then if test "x$enable_static" = "xyes"; then
AC_MSG_ERROR([Building static libraries is not supported under MinGW32]) AC_MSG_ERROR([Building static libraries is not supported under MinGW32])
fi fi
# Set FD_SETSIZE to 1024
CPPFLAGS=" -DFD_SETSIZE=1024 $CPPFLAGS"
;; ;;
*cygwin*) *cygwin*)
# Define on Cygwin to enable all library features # Define on Cygwin to enable all library features

View File

@ -32,13 +32,13 @@ MAINTAINERCLEANFILES = $(MAN_DOC) $(MAN_HTML)
EXTRA_DIST = asciidoc.conf $(MAN_TXT) EXTRA_DIST = asciidoc.conf $(MAN_TXT)
if BUILD_DOC
EXTRA_DIST += $(MAN_HTML)
if INSTALL_MAN if INSTALL_MAN
dist_man_MANS = $(MAN_DOC) dist_man_MANS = $(MAN_DOC)
endif endif
if BUILD_DOC
EXTRA_DIST += $(MAN_HTML)
SUFFIXES=.html .txt .xml .3 .7 SUFFIXES=.html .txt .xml .3 .7
.txt.html: .txt.html:

View File

@ -47,6 +47,28 @@ context.
[horizontal] [horizontal]
Default value:: 1 Default value:: 1
ZMQ_THREAD_SCHED_POLICY: Set scheduling policy for I/O threads
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_THREAD_SCHED_POLICY' argument sets the scheduling policy for
internal context's thread pool. This option is not available on windows.
Supported values for this option can be found in sched.h file,
or at http://man7.org/linux/man-pages/man2/sched_setscheduler.2.html.
This option only applies before creating any sockets on the context.
[horizontal]
Default value:: -1
ZMQ_THREAD_PRIORITY: Set scheduling priority for I/O threads
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_THREAD_PRIORITY' argument sets scheduling priority for
internal context's thread pool. This option is not available on windows.
Supported values for this option depend on chosen scheduling policy.
Details can be found in sched.h file, or at http://man7.org/linux/man-pages/man2/sched_setscheduler.2.html.
This option only applies before creating any sockets on the context.
[horizontal]
Default value:: -1
ZMQ_MAX_SOCKETS: Set maximum number of sockets ZMQ_MAX_SOCKETS: Set maximum number of sockets
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_MAX_SOCKETS' argument sets the maximum number of sockets allowed The 'ZMQ_MAX_SOCKETS' argument sets the maximum number of sockets allowed

View File

@ -450,14 +450,12 @@ Applicable socket types:: all, when using multicast transports
ZMQ_RCVBUF: Retrieve kernel receive buffer size ZMQ_RCVBUF: Retrieve kernel receive buffer size
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_RCVBUF' option shall retrieve the underlying kernel receive buffer The 'ZMQ_RCVBUF' option shall retrieve the underlying kernel receive buffer
size for the specified 'socket'. A value of zero means that the OS default is size for the specified 'socket'. For details refer to your operating system
in effect. For details refer to your operating system documentation for the documentation for the 'SO_RCVBUF' socket option.
'SO_RCVBUF' socket option.
[horizontal] [horizontal]
Option value type:: int Option value type:: int
Option value unit:: bytes Option value unit:: bytes
Default value:: 0
Applicable socket types:: all Applicable socket types:: all
@ -566,14 +564,12 @@ Applicable socket types:: all, when using multicast transports
ZMQ_SNDBUF: Retrieve kernel transmit buffer size ZMQ_SNDBUF: Retrieve kernel transmit buffer size
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_SNDBUF' option shall retrieve the underlying kernel transmit buffer The 'ZMQ_SNDBUF' option shall retrieve the underlying kernel transmit buffer
size for the specified 'socket'. A value of zero means that the OS default is size for the specified 'socket'. For details refer to your operating system
in effect. For details refer to your operating system documentation for the documentation for the 'SO_SNDBUF' socket option.
'SO_SNDBUF' socket option.
[horizontal] [horizontal]
Option value type:: int Option value type:: int
Option value unit:: bytes Option value unit:: bytes
Default value:: 0
Applicable socket types:: all Applicable socket types:: all

View File

@ -14,7 +14,8 @@ SYNOPSIS
Caution: All options, with the exception of ZMQ_SUBSCRIBE, ZMQ_UNSUBSCRIBE, Caution: All options, with the exception of ZMQ_SUBSCRIBE, ZMQ_UNSUBSCRIBE,
ZMQ_LINGER, ZMQ_ROUTER_HANDOVER, ZMQ_ROUTER_MANDATORY, ZMQ_PROBE_ROUTER, ZMQ_LINGER, ZMQ_ROUTER_HANDOVER, ZMQ_ROUTER_MANDATORY, ZMQ_PROBE_ROUTER,
ZMQ_XPUB_VERBOSE, ZMQ_REQ_CORRELATE, and ZMQ_REQ_RELAXED, only take effect for ZMQ_XPUB_VERBOSE, ZMQ_XPUB_VERBOSE_UNSUBSCRIBE, ZMQ_REQ_CORRELATE,
ZMQ_REQ_RELAXED, ZMQ_SNDHWM and ZMQ_RCVHWM, only take effect for
subsequent socket bind/connects. subsequent socket bind/connects.
Specifically, security options take effect for subsequent bind/connect calls, Specifically, security options take effect for subsequent bind/connect calls,
@ -247,6 +248,51 @@ Default value:: 30000
Applicable socket types:: all but ZMQ_STREAM, only for connection-oriented transports Applicable socket types:: all but ZMQ_STREAM, only for connection-oriented transports
ZMQ_HEARTBEAT_IVL: Set interval between sending ZMTP heartbeats
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_HEARTBEAT_IVL' option shall set the interval between sending ZMTP heartbeats
for the specified 'socket'. If this option is set and is greater than 0, then a 'PING'
ZMTP command will be sent every 'ZMQ_HEARTBEAT_IVL' milliseconds.
[horizontal]
Option value type:: int
Option value unit:: milliseconds
Default value:: 0
Applicable socket types:: all, when using connection-oriented transports
ZMQ_HEARTBEAT_TIMEOUT: Set timeout for ZMTP heartbeats
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_HEARTBEAT_TIMEOUT' option shall set how long to wait before timing-out a
connection after sending a 'PING' ZMTP command and not receiving any traffic. This
option is only valid if 'ZMQ_HEARTBEAT_IVL' is also set, and is greater than 0. The
connection will time out if there is no traffic received after sending the 'PING'
command, but the received traffic does not have to be a 'PONG' command - any received
traffic will cancel the timeout.
[horizontal]
Option value type:: int
Option value unit:: milliseconds
Default value:: 0
Applicable socket types:: all, when using connection-oriented transports
ZMQ_HEARTBEAT_TTL: Set the TTL value for ZMTP heartbeats
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_HEARTBEAT_TTL' option shall set the timeout on the remote peer for ZMTP
heartbeats. If this option is greater than 0, the remote side shall time out the
connection if it does not receive any more traffic within the TTL period. This option
does not have any effect if 'ZMQ_HEARTBEAT_IVL' is not set or is 0. Internally, this
value is rounded down to the nearest decisecond, any value less than 100 will have
no effect.
[horizontal]
Option value type:: int
Option value unit:: milliseconds
Default value:: 0
Applicable socket types:: all, when using connection-oriented transports
ZMQ_IDENTITY: Set socket identity ZMQ_IDENTITY: Set socket identity
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_IDENTITY' option shall set the identity of the specified 'socket' The 'ZMQ_IDENTITY' option shall set the identity of the specified 'socket'
@ -283,6 +329,28 @@ Default value:: 0 (false)
Applicable socket types:: all, only for connection-oriented transports. Applicable socket types:: all, only for connection-oriented transports.
ZMQ_INVERT_MATCHING: Invert message filtering
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Reverses the filtering behavior of PUB-SUB sockets, when set to 1.
On 'PUB' and 'XPUB' sockets, this causes messages to be sent to all
connected sockets 'except' those subscribed to a prefix that matches
the message. On 'SUB' sockets, this causes only incoming messages that
do 'not' match any of the socket's subscriptions to be received by the user.
Whenever 'ZMQ_INVERT_MATCHING' is set to 1 on a 'PUB' socket, all 'SUB'
sockets connecting to it must also have the option set to 1. Failure to
do so will have the 'SUB' sockets reject everything the 'PUB' socket sends
them. 'XSUB' sockets do not need to do this because they do not filter
incoming messages.
[horizontal]
Option value type:: int
Option value unit:: 0,1
Default value:: 0
Applicable socket types:: ZMQ_PUB, ZMQ_XPUB, ZMQ_SUB
ZMQ_IPV6: Enable IPv6 on socket ZMQ_IPV6: Enable IPv6 on socket
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Set the IPv6 option for the socket. A value of `1` means IPv6 is Set the IPv6 option for the socket. A value of `1` means IPv6 is
@ -428,14 +496,14 @@ Applicable socket types:: all, when using multicast transports
ZMQ_RCVBUF: Set kernel receive buffer size ZMQ_RCVBUF: Set kernel receive buffer size
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_RCVBUF' option shall set the underlying kernel receive buffer size for The 'ZMQ_RCVBUF' option shall set the underlying kernel receive buffer size for
the 'socket' to the specified size in bytes. A value of zero means leave the the 'socket' to the specified size in bytes. A value of -1 means leave the
OS default unchanged. For details refer to your operating system documentation OS default unchanged. For details refer to your operating system documentation
for the 'SO_RCVBUF' socket option. for the 'SO_RCVBUF' socket option.
[horizontal] [horizontal]
Option value type:: int Option value type:: int
Option value unit:: bytes Option value unit:: bytes
Default value:: 0 Default value:: -1
Applicable socket types:: all Applicable socket types:: all
@ -619,14 +687,14 @@ Applicable socket types:: ZMQ_ROUTER
ZMQ_SNDBUF: Set kernel transmit buffer size ZMQ_SNDBUF: Set kernel transmit buffer size
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_SNDBUF' option shall set the underlying kernel transmit buffer size The 'ZMQ_SNDBUF' option shall set the underlying kernel transmit buffer size
for the 'socket' to the specified size in bytes. A value of zero means leave for the 'socket' to the specified size in bytes. A value of -1 means leave
the OS default unchanged. For details please refer to your operating system the OS default unchanged. For details please refer to your operating system
documentation for the 'SO_SNDBUF' socket option. documentation for the 'SO_SNDBUF' socket option.
[horizontal] [horizontal]
Option value type:: int Option value type:: int
Option value unit:: bytes Option value unit:: bytes
Default value:: 0 Default value:: -1
Applicable socket types:: all Applicable socket types:: all
@ -670,16 +738,16 @@ Default value:: -1 (infinite)
Applicable socket types:: all Applicable socket types:: all
ZMQ_STREAM_NOTIFY: send connect notifications ZMQ_STREAM_NOTIFY: send connect and disconnect notifications
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enables connect notifications on a STREAM socket, when set to 1. By default a Enables connect and disconnect notifications on a STREAM socket, when set
STREAM socket does not notify new connections. When notifications are enabled, to 1. When notifications are enabled, the socket delivers a zero-length
it delivers a zero-length message to signal new client connections. message when a peer connects or disconnects.
[horizontal] [horizontal]
Option value type:: int Option value type:: int
Option value unit:: 0, 1 Option value unit:: 0, 1
Default value:: 0 Default value:: 1
Applicable socket types:: ZMQ_STREAM Applicable socket types:: ZMQ_STREAM
@ -726,9 +794,9 @@ Default value:: -1 (leave to OS default)
Applicable socket types:: all, when using TCP transports. Applicable socket types:: all, when using TCP transports.
ZMQ_TCP_KEEPALIVE_IDLE: Override TCP_KEEPCNT (or TCP_KEEPALIVE on some OS) ZMQ_TCP_KEEPALIVE_IDLE: Override TCP_KEEPIDLE (or TCP_KEEPALIVE on some OS)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Override 'TCP_KEEPCNT' (or 'TCP_KEEPALIVE' on some OS) socket option (where Override 'TCP_KEEPIDLE' (or 'TCP_KEEPALIVE' on some OS) socket option (where
supported by OS). The default value of `-1` means to skip any overrides and supported by OS). The default value of `-1` means to skip any overrides and
leave it to OS default. leave it to OS default.
@ -793,9 +861,28 @@ Option value unit:: 0, 1
Default value:: 0 Default value:: 0
Applicable socket types:: ZMQ_XPUB Applicable socket types:: ZMQ_XPUB
ZMQ_XPUB_MANUAL: change the subscription handling to manual
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ZMQ_XPUB_VERBOSE_UNSUBSCRIBE: provide all unsubscription messages on XPUB sockets
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sets the 'XPUB' socket behaviour on new subscriptions and unsubscriptions.
A value of '0' is the default and passes only the last unsubscription message to
upstream. A value of '1' passes all unsubscription messages upstream.
This behaviour should be enabled in all the intermediary XPUB sockets if
ZMQ_XPUB_VERBOSE is also being used in order to allow the correct forwarding
of all the unsubscription messages.
NOTE: This behaviour only takes effect when ZMQ_XPUB_VERBOSE is also enabled.
[horizontal]
Option value type:: int
Option value unit:: 0, 1
Default value:: 0
Applicable socket types:: ZMQ_XPUB
ZMQ_XPUB_MANUAL: change the subscription handling to manual
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sets the 'XPUB' socket subscription handling mode manual/automatic. Sets the 'XPUB' socket subscription handling mode manual/automatic.
A value of '0' is the default and subscription requests will be handled automatically. A value of '0' is the default and subscription requests will be handled automatically.
A value of '1' will change the subscription requests handling to manual, A value of '1' will change the subscription requests handling to manual,
@ -808,9 +895,25 @@ Option value unit:: 0, 1
Default value:: 0 Default value:: 0
Applicable socket types:: ZMQ_XPUB Applicable socket types:: ZMQ_XPUB
ZMQ_WELCOME_MSG: set welcome message that will be received by subscriber when connecting
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ZMQ_XPUB_NODROP: do not silently drop messages if SENDHWM is reached
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sets the 'XPUB' socket behaviour to return error EAGAIN if SENDHWM is
reached and the message could not be send.
A value of `0` is the default and drops the message silently when the peers
SNDHWM is reached. A value of `1` returns an 'EAGAIN' error code if the
SNDHWM is reached and ZMQ_DONTWAIT was used.
[horizontal]
Option value type:: int
Option value unit:: 0, 1
Default value:: 0
Applicable socket types:: ZMQ_XPUB, ZMQ_PUB
ZMQ_XPUB_WELCOME_MSG: set welcome message that will be received by subscriber when connecting
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sets a welcome message the will be recieved by subscriber when connecting. Sets a welcome message the will be recieved by subscriber when connecting.
Subscriber must subscribe to the Welcome message before connecting. Subscriber must subscribe to the Welcome message before connecting.
Welcome message will also be sent on reconnecting. Welcome message will also be sent on reconnecting.
@ -824,6 +927,7 @@ Option value unit:: N/A
Default value:: NULL Default value:: NULL
Applicable socket types:: ZMQ_XPUB Applicable socket types:: ZMQ_XPUB
ZMQ_ZAP_DOMAIN: Set RFC 27 authentication domain ZMQ_ZAP_DOMAIN: Set RFC 27 authentication domain
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sets the domain for ZAP (ZMQ RFC 27) authentication. For NULL security (the Sets the domain for ZAP (ZMQ RFC 27) authentication. For NULL security (the
@ -938,28 +1042,6 @@ Default value:: 1 (true)
Applicable socket types:: all, when using TCP transports. Applicable socket types:: all, when using TCP transports.
ZMQ_INVERT_MATCHING: Invert message filtering
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Reverses the filtering behavior of PUB-SUB sockets, when set to 1.
On 'PUB' and 'XPUB' sockets, this causes messages to be sent to all
connected sockets 'except' those subscribed to a prefix that matches
the message. On 'SUB' sockets, this causes only incoming messages that
do 'not' match any of the socket's subscriptions to be received by the user.
Whenever 'ZMQ_INVERT_MATCHING' is set to 1 on a 'PUB' socket, all 'SUB'
sockets connecting to it must also have the option set to 1. Failure to
do so will have the 'SUB' sockets reject everything the 'PUB' socket sends
them. 'XSUB' sockets do not need to do this because they do not filter
incoming messages.
[horizontal]
Option value type:: int
Option value unit:: 0,1
Default value:: 0
Applicable socket types:: ZMQ_PUB, ZMQ_XPUB, ZMQ_SUB
RETURN VALUE RETURN VALUE
------------ ------------
The _zmq_setsockopt()_ function shall return zero if successful. Otherwise it The _zmq_setsockopt()_ function shall return zero if successful. Otherwise it

View File

@ -314,8 +314,7 @@ becomes available for sending; messages are not discarded.
NOTE: 'ZMQ_PAIR' sockets are designed for inter-thread communication across NOTE: 'ZMQ_PAIR' sockets are designed for inter-thread communication across
the linkzmq:zmq_inproc[7] transport and do not implement functionality such the linkzmq:zmq_inproc[7] transport and do not implement functionality such
as auto-reconnection. 'ZMQ_PAIR' sockets are considered experimental and may as auto-reconnection.
have other missing or broken aspects.
[horizontal] [horizontal]
.Summary of ZMQ_PAIR characteristics .Summary of ZMQ_PAIR characteristics

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -306,6 +316,10 @@ ZMQ_EXPORT uint32_t zmq_msg_get_routing_id(zmq_msg_t *msg);
#define ZMQ_XPUB_WELCOME_MSG 72 #define ZMQ_XPUB_WELCOME_MSG 72
#define ZMQ_STREAM_NOTIFY 73 #define ZMQ_STREAM_NOTIFY 73
#define ZMQ_INVERT_MATCHING 74 #define ZMQ_INVERT_MATCHING 74
#define ZMQ_HEARTBEAT_IVL 75
#define ZMQ_HEARTBEAT_TTL 76
#define ZMQ_HEARTBEAT_TIMEOUT 77
#define ZMQ_XPUB_VERBOSE_UNSUBSCRIBE 78
/* Message options */ /* Message options */
#define ZMQ_MORE 1 #define ZMQ_MORE 1

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -3,17 +3,27 @@
Copyright (c) 2009-2011 250bpm s.r.o. Copyright (c) 2009-2011 250bpm s.r.o.
Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -115,7 +125,7 @@ int main (int argc, char *argv [])
double megabits; double megabits;
if (argc != 3) { if (argc != 3) {
printf ("usage: thread_thr <message-size> <message-count>\n"); printf ("usage: inproc_thr <message-size> <message-count>\n");
return 1; return 1;
} }

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -26,7 +36,9 @@
#if defined ZMQ_FORCE_MUTEXES #if defined ZMQ_FORCE_MUTEXES
#define ZMQ_ATOMIC_COUNTER_MUTEX #define ZMQ_ATOMIC_COUNTER_MUTEX
#elif defined ZMQ_HAVE_ATOMIC_INTRINSICS #elif defined ZMQ_HAVE_ATOMIC_INTRINSICS
#define ZMQ_ATOMIC_INTRINSIC #define ZMQ_ATOMIC_COUNTER_INTRINSIC
#elif (defined ZMQ_CXX11 && defined __cplusplus && __cplusplus >= 201103L)
#define ZMQ_ATOMIC_COUNTER_CXX11
#elif (defined __i386__ || defined __x86_64__) && defined __GNUC__ #elif (defined __i386__ || defined __x86_64__) && defined __GNUC__
#define ZMQ_ATOMIC_COUNTER_X86 #define ZMQ_ATOMIC_COUNTER_X86
#elif defined __ARM_ARCH_7A__ && defined __GNUC__ #elif defined __ARM_ARCH_7A__ && defined __GNUC__
@ -43,6 +55,8 @@
#if defined ZMQ_ATOMIC_COUNTER_MUTEX #if defined ZMQ_ATOMIC_COUNTER_MUTEX
#include "mutex.hpp" #include "mutex.hpp"
#elif defined ZMQ_ATOMIC_COUNTER_CXX11
#include <atomic>
#elif defined ZMQ_ATOMIC_COUNTER_WINDOWS #elif defined ZMQ_ATOMIC_COUNTER_WINDOWS
#include "windows.hpp" #include "windows.hpp"
#elif defined ZMQ_ATOMIC_COUNTER_ATOMIC_H #elif defined ZMQ_ATOMIC_COUNTER_ATOMIC_H
@ -85,8 +99,10 @@ namespace zmq
#if defined ZMQ_ATOMIC_COUNTER_WINDOWS #if defined ZMQ_ATOMIC_COUNTER_WINDOWS
old_value = InterlockedExchangeAdd ((LONG*) &value, increment_); old_value = InterlockedExchangeAdd ((LONG*) &value, increment_);
#elif defined ZMQ_ATOMIC_INTRINSIC #elif defined ZMQ_ATOMIC_COUNTER_INTRINSIC
old_value = __atomic_fetch_add(&value, increment_, __ATOMIC_ACQ_REL); old_value = __atomic_fetch_add(&value, increment_, __ATOMIC_ACQ_REL);
#elif defined ZMQ_ATOMIC_COUNTER_CXX11
old_value = value.fetch_add(increment_, std::memory_order_acq_rel);
#elif defined ZMQ_ATOMIC_COUNTER_ATOMIC_H #elif defined ZMQ_ATOMIC_COUNTER_ATOMIC_H
integer_t new_value = atomic_add_32_nv (&value, increment_); integer_t new_value = atomic_add_32_nv (&value, increment_);
old_value = new_value - increment_; old_value = new_value - increment_;
@ -129,9 +145,12 @@ namespace zmq
LONG delta = - ((LONG) decrement); LONG delta = - ((LONG) decrement);
integer_t old = InterlockedExchangeAdd ((LONG*) &value, delta); integer_t old = InterlockedExchangeAdd ((LONG*) &value, delta);
return old - decrement != 0; return old - decrement != 0;
#elif defined ZMQ_ATOMIC_INTRINSIC #elif defined ZMQ_ATOMIC_COUNTER_INTRINSIC
integer_t nv = __atomic_sub_fetch(&value, decrement, __ATOMIC_ACQ_REL); integer_t nv = __atomic_sub_fetch(&value, decrement, __ATOMIC_ACQ_REL);
return nv != 0; return nv != 0;
#elif defined ZMQ_ATOMIC_COUNTER_CXX11
integer_t old = value.fetch_sub(decrement, std::memory_order_acq_rel);
return old - decrement != 0;
#elif defined ZMQ_ATOMIC_COUNTER_ATOMIC_H #elif defined ZMQ_ATOMIC_COUNTER_ATOMIC_H
int32_t delta = - ((int32_t) decrement); int32_t delta = - ((int32_t) decrement);
integer_t nv = atomic_add_32_nv (&value, delta); integer_t nv = atomic_add_32_nv (&value, delta);
@ -173,40 +192,39 @@ namespace zmq
#endif #endif
} }
inline integer_t get () inline integer_t get () const
{ {
return value; return value;
} }
private: private:
#if defined ZMQ_ATOMIC_COUNTER_CXX11
std::atomic<integer_t> value;
#else
volatile integer_t value; volatile integer_t value;
#endif
#if defined ZMQ_ATOMIC_COUNTER_MUTEX #if defined ZMQ_ATOMIC_COUNTER_MUTEX
mutex_t sync; mutex_t sync;
#endif #endif
#if ! defined ZMQ_ATOMIC_COUNTER_CXX11
atomic_counter_t (const atomic_counter_t&); atomic_counter_t (const atomic_counter_t&);
const atomic_counter_t& operator = (const atomic_counter_t&); const atomic_counter_t& operator = (const atomic_counter_t&);
#endif
}; };
} }
// Remove macros local to this file. // Remove macros local to this file.
#if defined ZMQ_ATOMIC_COUNTER_WINDOWS
#undef ZMQ_ATOMIC_COUNTER_WINDOWS
#endif
#if defined ZMQ_ATOMIC_COUNTER_ATOMIC_H
#undef ZMQ_ATOMIC_COUNTER_ATOMIC_H
#endif
#if defined ZMQ_ATOMIC_COUNTER_X86
#undef ZMQ_ATOMIC_COUNTER_X86
#endif
#if defined ZMQ_ATOMIC_COUNTER_ARM
#undef ZMQ_ATOMIC_COUNTER_ARM
#endif
#if defined ZMQ_ATOMIC_COUNTER_MUTEX
#undef ZMQ_ATOMIC_COUNTER_MUTEX #undef ZMQ_ATOMIC_COUNTER_MUTEX
#endif #undef ZMQ_ATOMIC_COUNTER_INTRINSIC
#undef ZMQ_ATOMIC_COUNTER_CXX11
#undef ZMQ_ATOMIC_COUNTER_X86
#undef ZMQ_ATOMIC_COUNTER_ARM
#undef ZMQ_ATOMIC_COUNTER_WINDOWS
#undef ZMQ_ATOMIC_COUNTER_ATOMIC_H
#undef ZMQ_ATOMIC_COUNTER_TILE
#endif #endif

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -26,6 +36,8 @@
#define ZMQ_ATOMIC_PTR_MUTEX #define ZMQ_ATOMIC_PTR_MUTEX
#elif defined ZMQ_HAVE_ATOMIC_INTRINSICS #elif defined ZMQ_HAVE_ATOMIC_INTRINSICS
#define ZMQ_ATOMIC_PTR_INTRINSIC #define ZMQ_ATOMIC_PTR_INTRINSIC
#elif (defined ZMQ_CXX11 && defined __cplusplus && __cplusplus >= 201103L)
#define ZMQ_ATOMIC_PTR_CXX11
#elif (defined __i386__ || defined __x86_64__) && defined __GNUC__ #elif (defined __i386__ || defined __x86_64__) && defined __GNUC__
#define ZMQ_ATOMIC_PTR_X86 #define ZMQ_ATOMIC_PTR_X86
#elif defined __ARM_ARCH_7A__ && defined __GNUC__ #elif defined __ARM_ARCH_7A__ && defined __GNUC__
@ -42,6 +54,8 @@
#if defined ZMQ_ATOMIC_PTR_MUTEX #if defined ZMQ_ATOMIC_PTR_MUTEX
#include "mutex.hpp" #include "mutex.hpp"
#elif defined ZMQ_ATOMIC_PTR_CXX11
#include <atomic>
#elif defined ZMQ_ATOMIC_PTR_WINDOWS #elif defined ZMQ_ATOMIC_PTR_WINDOWS
#include "windows.hpp" #include "windows.hpp"
#elif defined ZMQ_ATOMIC_PTR_ATOMIC_H #elif defined ZMQ_ATOMIC_PTR_ATOMIC_H
@ -86,6 +100,8 @@ namespace zmq
return (T*) InterlockedExchangePointer ((PVOID*) &ptr, val_); return (T*) InterlockedExchangePointer ((PVOID*) &ptr, val_);
#elif defined ZMQ_ATOMIC_PTR_INTRINSIC #elif defined ZMQ_ATOMIC_PTR_INTRINSIC
return (T*) __atomic_exchange_n (&ptr, val_, __ATOMIC_ACQ_REL); return (T*) __atomic_exchange_n (&ptr, val_, __ATOMIC_ACQ_REL);
#elif defined ZMQ_ATOMIC_PTR_CXX11
return ptr.exchange(val_, std::memory_order_acq_rel);
#elif defined ZMQ_ATOMIC_PTR_ATOMIC_H #elif defined ZMQ_ATOMIC_PTR_ATOMIC_H
return (T*) atomic_swap_ptr (&ptr, val_); return (T*) atomic_swap_ptr (&ptr, val_);
#elif defined ZMQ_ATOMIC_PTR_TILE #elif defined ZMQ_ATOMIC_PTR_TILE
@ -136,6 +152,9 @@ namespace zmq
__atomic_compare_exchange_n (&ptr, (volatile T**) &old, val_, false, __atomic_compare_exchange_n (&ptr, (volatile T**) &old, val_, false,
__ATOMIC_RELEASE, __ATOMIC_ACQUIRE); __ATOMIC_RELEASE, __ATOMIC_ACQUIRE);
return old; return old;
#elif defined ZMQ_ATOMIC_PTR_CXX11
ptr.compare_exchange_strong(cmp_, val_, std::memory_order_acq_rel);
return cmp_;
#elif defined ZMQ_ATOMIC_PTR_ATOMIC_H #elif defined ZMQ_ATOMIC_PTR_ATOMIC_H
return (T*) atomic_cas_ptr (&ptr, cmp_, val_); return (T*) atomic_cas_ptr (&ptr, cmp_, val_);
#elif defined ZMQ_ATOMIC_PTR_TILE #elif defined ZMQ_ATOMIC_PTR_TILE
@ -179,33 +198,32 @@ namespace zmq
private: private:
#if defined ZMQ_ATOMIC_PTR_CXX11
std::atomic<T*> ptr;
#else
volatile T *ptr; volatile T *ptr;
#endif
#if defined ZMQ_ATOMIC_PTR_MUTEX #if defined ZMQ_ATOMIC_PTR_MUTEX
mutex_t sync; mutex_t sync;
#endif #endif
#if ! defined ZMQ_ATOMIC_PTR_CXX11
atomic_ptr_t (const atomic_ptr_t&); atomic_ptr_t (const atomic_ptr_t&);
const atomic_ptr_t &operator = (const atomic_ptr_t&); const atomic_ptr_t &operator = (const atomic_ptr_t&);
#endif
}; };
} }
// Remove macros local to this file. // Remove macros local to this file.
#if defined ZMQ_ATOMIC_PTR_WINDOWS
#undef ZMQ_ATOMIC_PTR_WINDOWS
#endif
#if defined ZMQ_ATOMIC_PTR_ATOMIC_H
#undef ZMQ_ATOMIC_PTR_ATOMIC_H
#endif
#if defined ZMQ_ATOMIC_PTR_X86
#undef ZMQ_ATOMIC_PTR_X86
#endif
#if defined ZMQ_ATOMIC_PTR_ARM
#undef ZMQ_ATOMIC_PTR_ARM
#endif
#if defined ZMQ_ATOMIC_PTR_MUTEX
#undef ZMQ_ATOMIC_PTR_MUTEX #undef ZMQ_ATOMIC_PTR_MUTEX
#endif #undef ZMQ_ATOMIC_PTR_INTRINSIC
#undef ZMQ_ATOMIC_PTR_CXX11
#undef ZMQ_ATOMIC_PTR_X86
#undef ZMQ_ATOMIC_PTR_ARM
#undef ZMQ_ATOMIC_PTR_TILE
#undef ZMQ_ATOMIC_PTR_WINDOWS
#undef ZMQ_ATOMIC_PTR_ATOMIC_H
#endif #endif

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -31,6 +41,47 @@
#include "windows.hpp" #include "windows.hpp"
// Condition variable is supported from Windows Vista only, to use condition variable define _WIN32_WINNT to 0x0600
#if _WIN32_WINNT < 0x0600
namespace zmq
{
class condition_variable_t
{
public:
inline condition_variable_t ()
{
zmq_assert(false);
}
inline ~condition_variable_t ()
{
}
inline int wait (mutex_t* mutex_, int timeout_ )
{
zmq_assert(false);
return -1;
}
inline void broadcast ()
{
zmq_assert(false);
}
private:
// Disable copy construction and assignment.
condition_variable_t (const condition_variable_t&);
void operator = (const condition_variable_t&);
};
}
#else
namespace zmq namespace zmq
{ {
@ -79,6 +130,8 @@ namespace zmq
} }
#endif
#else #else
#include <pthread.h> #include <pthread.h>

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -519,15 +529,6 @@ void zmq::ctx_t::connect_inproc_sockets (zmq::socket_base_t *bind_socket_,
errno_assert (rc == 0); errno_assert (rc == 0);
} }
int sndhwm = 0;
if (pending_connection_.endpoint.options.sndhwm != 0 && bind_options.rcvhwm != 0)
sndhwm = pending_connection_.endpoint.options.sndhwm + bind_options.rcvhwm;
int rcvhwm = 0;
if (pending_connection_.endpoint.options.rcvhwm != 0 && bind_options.sndhwm != 0)
rcvhwm = pending_connection_.endpoint.options.rcvhwm + bind_options.sndhwm;
bool conflate = pending_connection_.endpoint.options.conflate && bool conflate = pending_connection_.endpoint.options.conflate &&
(pending_connection_.endpoint.options.type == ZMQ_DEALER || (pending_connection_.endpoint.options.type == ZMQ_DEALER ||
pending_connection_.endpoint.options.type == ZMQ_PULL || pending_connection_.endpoint.options.type == ZMQ_PULL ||
@ -535,9 +536,17 @@ void zmq::ctx_t::connect_inproc_sockets (zmq::socket_base_t *bind_socket_,
pending_connection_.endpoint.options.type == ZMQ_PUB || pending_connection_.endpoint.options.type == ZMQ_PUB ||
pending_connection_.endpoint.options.type == ZMQ_SUB); pending_connection_.endpoint.options.type == ZMQ_SUB);
int hwms [2] = {conflate? -1 : sndhwm, conflate? -1 : rcvhwm}; if (!conflate) {
pending_connection_.connect_pipe->set_hwms(hwms [1], hwms [0]); pending_connection_.connect_pipe->set_hwms_boost(bind_options.sndhwm, bind_options.rcvhwm);
pending_connection_.bind_pipe->set_hwms(hwms [0], hwms [1]); pending_connection_.bind_pipe->set_hwms_boost(pending_connection_.endpoint.options.sndhwm, pending_connection_.endpoint.options.rcvhwm);
pending_connection_.connect_pipe->set_hwms(pending_connection_.endpoint.options.rcvhwm, pending_connection_.endpoint.options.sndhwm);
pending_connection_.bind_pipe->set_hwms(bind_options.rcvhwm, bind_options.sndhwm);
}
else {
pending_connection_.connect_pipe->set_hwms(-1, -1);
pending_connection_.bind_pipe->set_hwms(-1, -1);
}
if (side_ == bind_side) { if (side_ == bind_side) {
command_t cmd; command_t cmd;

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -120,6 +130,8 @@ int zmq::curve_client_t::encode (msg_t *msg_)
uint8_t flags = 0; uint8_t flags = 0;
if (msg_->flags () & msg_t::more) if (msg_->flags () & msg_t::more)
flags |= 0x01; flags |= 0x01;
if (msg_->flags () & msg_t::command)
flags |= 0x02;
uint8_t message_nonce [crypto_box_NONCEBYTES]; uint8_t message_nonce [crypto_box_NONCEBYTES];
memcpy (message_nonce, "CurveZMQMESSAGEC", 16); memcpy (message_nonce, "CurveZMQMESSAGEC", 16);
@ -213,6 +225,8 @@ int zmq::curve_client_t::decode (msg_t *msg_)
const uint8_t flags = message_plaintext [crypto_box_ZEROBYTES]; const uint8_t flags = message_plaintext [crypto_box_ZEROBYTES];
if (flags & 0x01) if (flags & 0x01)
msg_->set_flags (msg_t::more); msg_->set_flags (msg_t::more);
if (flags & 0x02)
msg_->set_flags (msg_t::command);
memcpy (msg_->data (), memcpy (msg_->data (),
message_plaintext + crypto_box_ZEROBYTES + 1, message_plaintext + crypto_box_ZEROBYTES + 1,

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -132,6 +142,8 @@ int zmq::curve_server_t::encode (msg_t *msg_)
uint8_t flags = 0; uint8_t flags = 0;
if (msg_->flags () & msg_t::more) if (msg_->flags () & msg_t::more)
flags |= 0x01; flags |= 0x01;
if (msg_->flags () & msg_t::command)
flags |= 0x02;
uint8_t *message_plaintext = static_cast <uint8_t *> (malloc (mlen)); uint8_t *message_plaintext = static_cast <uint8_t *> (malloc (mlen));
alloc_assert (message_plaintext); alloc_assert (message_plaintext);
@ -222,6 +234,8 @@ int zmq::curve_server_t::decode (msg_t *msg_)
const uint8_t flags = message_plaintext [crypto_box_ZEROBYTES]; const uint8_t flags = message_plaintext [crypto_box_ZEROBYTES];
if (flags & 0x01) if (flags & 0x01)
msg_->set_flags (msg_t::more); msg_->set_flags (msg_t::more);
if (flags & 0x02)
msg_->set_flags (msg_t::command);
memcpy (msg_->data (), memcpy (msg_->data (),
message_plaintext + crypto_box_ZEROBYTES + 1, message_plaintext + crypto_box_ZEROBYTES + 1,

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -20,14 +30,14 @@
#ifndef __ZMQ_DECODER_HPP_INCLUDED__ #ifndef __ZMQ_DECODER_HPP_INCLUDED__
#define __ZMQ_DECODER_HPP_INCLUDED__ #define __ZMQ_DECODER_HPP_INCLUDED__
#include <stddef.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm> #include <algorithm>
#include <cstddef>
#include <cstring>
#include "decoder_allocators.hpp"
#include "err.hpp" #include "err.hpp"
#include "msg.hpp"
#include "i_decoder.hpp" #include "i_decoder.hpp"
#include "msg.hpp"
#include "stdint.hpp" #include "stdint.hpp"
namespace zmq namespace zmq
@ -42,31 +52,34 @@ namespace zmq
// //
// This class implements the state machine that parses the incoming buffer. // This class implements the state machine that parses the incoming buffer.
// Derived class should implement individual state machine actions. // Derived class should implement individual state machine actions.
//
template <typename T> class decoder_base_t : public i_decoder // Buffer managment is done by an allocator policy.
template <typename T, typename A = c_single_allocator>
class decoder_base_t : public i_decoder
{ {
public: public:
inline decoder_base_t (size_t bufsize_) : explicit decoder_base_t (A *allocator_) :
next (NULL), next (NULL),
read_pos (NULL), read_pos (NULL),
to_read (0), to_read (0),
bufsize (bufsize_) allocator(allocator_)
{ {
buf = (unsigned char*) malloc (bufsize_); buf = allocator->allocate ();
alloc_assert (buf);
} }
// The destructor doesn't have to be virtual. It is mad virtual // The destructor doesn't have to be virtual. It is made virtual
// just to keep ICC and code checking tools from complaining. // just to keep ICC and code checking tools from complaining.
inline virtual ~decoder_base_t () virtual ~decoder_base_t ()
{ {
free (buf); allocator->deallocate ();
} }
// Returns a buffer to be filled with binary data. // Returns a buffer to be filled with binary data.
inline void get_buffer (unsigned char **data_, size_t *size_) void get_buffer (unsigned char **data_, std::size_t *size_)
{ {
buf = allocator->allocate ();
// If we are expected to read large message, we'll opt for zero- // If we are expected to read large message, we'll opt for zero-
// copy, i.e. we'll ask caller to fill the data directly to the // copy, i.e. we'll ask caller to fill the data directly to the
// message. Note that subsequent read(s) are non-blocking, thus // message. Note that subsequent read(s) are non-blocking, thus
@ -75,14 +88,14 @@ namespace zmq
// As a consequence, large messages being received won't block // As a consequence, large messages being received won't block
// other engines running in the same I/O thread for excessive // other engines running in the same I/O thread for excessive
// amounts of time. // amounts of time.
if (to_read >= bufsize) { if (to_read >= allocator->size ()) {
*data_ = read_pos; *data_ = read_pos;
*size_ = to_read; *size_ = to_read;
return; return;
} }
*data_ = buf; *data_ = buf;
*size_ = bufsize; *size_ = allocator->size ();
} }
// Processes the data in the buffer previously allocated using // Processes the data in the buffer previously allocated using
@ -91,8 +104,8 @@ namespace zmq
// whole message was decoded or 0 when more data is required. // whole message was decoded or 0 when more data is required.
// On error, -1 is returned and errno set accordingly. // On error, -1 is returned and errno set accordingly.
// Number of bytes processed is returned in byts_used_. // Number of bytes processed is returned in byts_used_.
inline int decode (const unsigned char *data_, size_t size_, int decode (const unsigned char *data_, std::size_t size_,
size_t &bytes_used_) std::size_t &bytes_used_)
{ {
bytes_used_ = 0; bytes_used_ = 0;
@ -106,7 +119,7 @@ namespace zmq
bytes_used_ = size_; bytes_used_ = size_;
while (!to_read) { while (!to_read) {
const int rc = (static_cast <T*> (this)->*next) (); const int rc = (static_cast <T *> (this)->*next) (data_ + bytes_used_);
if (rc != 0) if (rc != 0)
return rc; return rc;
} }
@ -115,15 +128,21 @@ namespace zmq
while (bytes_used_ < size_) { while (bytes_used_ < size_) {
// Copy the data from buffer to the message. // Copy the data from buffer to the message.
const size_t to_copy = std::min (to_read, size_ - bytes_used_); const std::size_t to_copy = std::min (to_read, size_ - bytes_used_);
memcpy (read_pos, data_ + bytes_used_, to_copy); // only copy when the destination address is different from the
// current address in the buffer
if (read_pos != data_ + bytes_used_) {
std::memcpy (read_pos, data_ + bytes_used_, to_copy);
}
read_pos += to_copy; read_pos += to_copy;
to_read -= to_copy; to_read -= to_copy;
bytes_used_ += to_copy; bytes_used_ += to_copy;
// Try to get more space in the message to fill in. // Try to get more space in the message to fill in.
// If none is available, return. // If none is available, return.
while (to_read == 0) { while (to_read == 0) {
const int rc = (static_cast <T*> (this)->*next) (); // pass current address in the buffer
const int rc = (static_cast <T *> (this)->*next) (data_ + bytes_used_);
if (rc != 0) if (rc != 0)
return rc; return rc;
} }
@ -132,17 +151,22 @@ namespace zmq
return 0; return 0;
} }
virtual void resize_buffer (std::size_t new_size)
{
allocator->resize (new_size);
}
protected: protected:
// Prototype of state machine action. Action should return false if // Prototype of state machine action. Action should return false if
// it is unable to push the data to the system. // it is unable to push the data to the system.
typedef int (T::*step_t) (); typedef int (T:: *step_t) (unsigned char const *);
// This function should be called from derived class to read data // This function should be called from derived class to read data
// from the buffer and schedule next state machine action. // from the buffer and schedule next state machine action.
inline void next_step (void *read_pos_, size_t to_read_, step_t next_) void next_step (void *read_pos_, std::size_t to_read_, step_t next_)
{ {
read_pos = (unsigned char*) read_pos_; read_pos = static_cast <unsigned char*> (read_pos_);
to_read = to_read_; to_read = to_read_;
next = next_; next = next_;
} }
@ -158,16 +182,15 @@ namespace zmq
unsigned char *read_pos; unsigned char *read_pos;
// How much data to read before taking next step. // How much data to read before taking next step.
size_t to_read; std::size_t to_read;
// The duffer for data to decode. // The duffer for data to decode.
size_t bufsize; A *allocator;
unsigned char *buf; unsigned char *buf;
decoder_base_t (const decoder_base_t&); decoder_base_t (const decoder_base_t &);
const decoder_base_t &operator = (const decoder_base_t&); const decoder_base_t &operator = (const decoder_base_t &);
}; };
} }
#endif #endif

142
src/decoder_allocators.cpp Normal file
View File

@ -0,0 +1,142 @@
/*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of libzmq, the ZeroMQ core engine in C++.
libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License (LGPL) as published
by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
As a special exception, the Contributors give you permission to link
this library with independent modules to produce an executable,
regardless of the license terms of these independent modules, and to
copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "decoder_allocators.hpp"
#include <cmath>
#include "msg.hpp"
zmq::shared_message_memory_allocator::shared_message_memory_allocator (std::size_t bufsize_) :
buf(NULL),
bufsize(0),
max_size(bufsize_),
msg_refcnt(NULL),
maxCounters (static_cast <size_t> (std::ceil (static_cast <double> (max_size) / static_cast <double> (msg_t::max_vsm_size))))
{
}
zmq::shared_message_memory_allocator::shared_message_memory_allocator (std::size_t bufsize_, std::size_t maxMessages) :
buf(NULL),
bufsize(0),
max_size(bufsize_),
msg_refcnt(NULL),
maxCounters(maxMessages)
{
}
zmq::shared_message_memory_allocator::~shared_message_memory_allocator ()
{
deallocate();
}
unsigned char* zmq::shared_message_memory_allocator::allocate ()
{
if (buf) {
// release reference count to couple lifetime to messages
zmq::atomic_counter_t* c = reinterpret_cast<zmq::atomic_counter_t* >(buf);
// if refcnt drops to 0, there are no message using the buffer
// because either all messages have been closed or only vsm-messages
// were created
if (c->sub (1)) {
// buffer is still in use as message data. "Release" it and create a new one
// release pointer because we are going to create a new buffer
release ();
}
}
// if buf != NULL it is not used by any message so we can re-use it for the next run
if (!buf) {
// allocate memory for reference counters together with reception buffer
std::size_t const allocationsize =
max_size + sizeof (zmq::atomic_counter_t) +
maxCounters * sizeof (zmq::atomic_counter_t);
buf = static_cast <unsigned char *> (std::malloc (allocationsize));
alloc_assert (buf);
new (buf) atomic_counter_t (1);
} else {
// release reference count to couple lifetime to messages
zmq::atomic_counter_t *c = reinterpret_cast <zmq::atomic_counter_t *> (buf);
c->set (1);
}
bufsize = max_size;
msg_refcnt = reinterpret_cast <zmq::atomic_counter_t*> (buf + sizeof (atomic_counter_t) + max_size);
return buf + sizeof (zmq::atomic_counter_t);
}
void zmq::shared_message_memory_allocator::deallocate ()
{
std::free (buf);
buf = NULL;
bufsize = 0;
msg_refcnt = NULL;
}
unsigned char* zmq::shared_message_memory_allocator::release ()
{
unsigned char* b = buf;
buf = NULL;
bufsize = 0;
msg_refcnt = NULL;
return b;
}
void zmq::shared_message_memory_allocator::inc_ref ()
{
(reinterpret_cast <zmq::atomic_counter_t*> (buf))->add (1);
}
void zmq::shared_message_memory_allocator::call_dec_ref(void*, void* hint)
{
zmq_assert (hint);
unsigned char* buf = static_cast <unsigned char*> (hint);
zmq::atomic_counter_t* c = reinterpret_cast <zmq::atomic_counter_t*> (buf);
if (!c->sub (1)) {
c->~atomic_counter_t ();
std::free (buf);
buf = NULL;
}
}
std::size_t zmq::shared_message_memory_allocator::size () const
{
return bufsize;
}
unsigned char* zmq::shared_message_memory_allocator::data ()
{
return buf + sizeof (zmq::atomic_counter_t);
}

154
src/decoder_allocators.hpp Normal file
View File

@ -0,0 +1,154 @@
/*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of libzmq, the ZeroMQ core engine in C++.
libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License (LGPL) as published
by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
As a special exception, the Contributors give you permission to link
this library with independent modules to produce an executable,
regardless of the license terms of these independent modules, and to
copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __ZMQ_DECODER_ALLOCATORS_HPP_INCLUDED__
#define __ZMQ_DECODER_ALLOCATORS_HPP_INCLUDED__
#include <cstddef>
#include <cstdlib>
#include "atomic_counter.hpp"
#include "err.hpp"
namespace zmq
{
// Static buffer policy.
class c_single_allocator
{
public:
explicit c_single_allocator (std::size_t bufsize_) :
bufsize(bufsize_),
buf(static_cast <unsigned char*> (std::malloc (bufsize)))
{
alloc_assert (buf);
}
~c_single_allocator ()
{
std::free (buf);
}
unsigned char* allocate ()
{
return buf;
}
void deallocate ()
{
}
std::size_t size () const
{
return bufsize;
}
void resize (std::size_t new_size)
{
bufsize = new_size;
}
private:
std::size_t bufsize;
unsigned char* buf;
c_single_allocator (c_single_allocator const&);
c_single_allocator& operator = (c_single_allocator const&);
};
// This allocater allocates a reference counted buffer which is used by v2_decoder_t
// to use zero-copy msg::init_data to create messages with memory from this buffer as
// data storage.
//
// The buffer is allocated with a reference count of 1 to make sure that is is alive while
// decoding messages. Otherwise, it is possible that e.g. the first message increases the count
// from zero to one, gets passed to the user application, processed in the user thread and deleted
// which would then deallocate the buffer. The drawback is that the buffer may be allocated longer
// than necessary because it is only deleted when allocate is called the next time.
class shared_message_memory_allocator
{
public:
explicit shared_message_memory_allocator (std::size_t bufsize_);
// Create an allocator for a maximum number of messages
shared_message_memory_allocator (std::size_t bufsize_, std::size_t maxMessages);
~shared_message_memory_allocator ();
// Allocate a new buffer
//
// This releases the current buffer to be bound to the lifetime of the messages
// created on this bufer.
unsigned char* allocate ();
// force deallocation of buffer.
void deallocate ();
// Give up ownership of the buffer. The buffer's lifetime is now coupled to
// the messages constructed on top of it.
unsigned char* release ();
void inc_ref ();
static void call_dec_ref (void*, void* buffer);
std::size_t size () const;
// Return pointer to the first message data byte.
unsigned char* data ();
// Return pointer to the first byte of the buffer.
unsigned char* buffer ()
{
return buf;
}
void resize (std::size_t new_size)
{
bufsize = new_size;
}
zmq::atomic_counter_t* provide_refcnt ()
{
return msg_refcnt;
}
void advance_refcnt ()
{
msg_refcnt++;
}
private:
unsigned char* buf;
std::size_t bufsize;
std::size_t max_size;
zmq::atomic_counter_t* msg_refcnt;
std::size_t maxCounters;
};
}
#endif

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -202,13 +212,13 @@ void zmq::win_error (char *buffer_, size_t buffer_size_)
{ {
DWORD errcode = GetLastError (); DWORD errcode = GetLastError ();
#if defined _WIN32_WCE #if defined _WIN32_WCE
DWORD rc = FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM | DWORD rc = FormatMessageW (FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS, NULL, errcode, MAKELANGID(LANG_NEUTRAL, FORMAT_MESSAGE_IGNORE_INSERTS, NULL, errcode, MAKELANGID(LANG_NEUTRAL,
SUBLANG_DEFAULT), (LPWSTR)buffer_, buffer_size_ / sizeof(wchar_t), NULL ); SUBLANG_DEFAULT), (LPWSTR)buffer_, buffer_size_ / sizeof(wchar_t), NULL);
#else #else
DWORD rc = FormatMessageA (FORMAT_MESSAGE_FROM_SYSTEM | DWORD rc = FormatMessageA (FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS, NULL, errcode, MAKELANGID(LANG_NEUTRAL, FORMAT_MESSAGE_IGNORE_INSERTS, NULL, errcode, MAKELANGID(LANG_NEUTRAL,
SUBLANG_DEFAULT), buffer_, (DWORD) buffer_size_, NULL ); SUBLANG_DEFAULT), buffer_, (DWORD) buffer_size_, NULL);
#endif #endif
zmq_assert (rc); zmq_assert (rc);
} }

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -70,6 +80,8 @@ int zmq::gssapi_mechanism_base_t::encode_message (msg_t *msg_)
uint8_t flags = 0; uint8_t flags = 0;
if (msg_->flags () & msg_t::more) if (msg_->flags () & msg_t::more)
flags |= 0x01; flags |= 0x01;
if (msg ->flags () & msg_t::command)
flags |= 0x02;
uint8_t *plaintext_buffer = static_cast <uint8_t *>(malloc(msg_->size ()+1)); uint8_t *plaintext_buffer = static_cast <uint8_t *>(malloc(msg_->size ()+1));
plaintext_buffer[0] = flags; plaintext_buffer[0] = flags;
@ -167,6 +179,8 @@ int zmq::gssapi_mechanism_base_t::decode_message (msg_t *msg_)
const uint8_t flags = static_cast <char *> (plaintext.value)[0]; const uint8_t flags = static_cast <char *> (plaintext.value)[0];
if (flags & 0x01) if (flags & 0x01)
msg_->set_flags (msg_t::more); msg_->set_flags (msg_t::more);
if (flags & 0x02)
msg_->set_flags (msg_t::command);
memcpy (msg_->data (), static_cast <char *> (plaintext.value)+1, plaintext.length-1); memcpy (msg_->data (), static_cast <char *> (plaintext.value)+1, plaintext.length-1);

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -36,6 +46,7 @@ namespace zmq
virtual void get_buffer (unsigned char **data_, size_t *size_) = 0; virtual void get_buffer (unsigned char **data_, size_t *size_) = 0;
virtual void resize_buffer(size_t) = 0;
// Decodes data pointed to by data_. // Decodes data pointed to by data_.
// When a message is decoded, 1 is returned. // When a message is decoded, 1 is returned.
// When the decoder needs more data, 0 is returnd. // When the decoder needs more data, 0 is returnd.
@ -44,6 +55,8 @@ namespace zmq
size_t &processed) = 0; size_t &processed) = 0;
virtual msg_t *msg () = 0; virtual msg_t *msg () = 0;
}; };
} }

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,20 +1,30 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifndef __ZMQ_I_POLL_EVENTS_HPP_INCLUDED__ #ifndef __ZMQ_I_POLL_EVENTS_HPP_INCLUDED__

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -7,4 +7,5 @@ Name: libzmq
Description: 0MQ c++ library Description: 0MQ c++ library
Version: @ZMQ_VERSION_MAJOR@.@ZMQ_VERSION_MINOR@.@ZMQ_VERSION_PATCH@ Version: @ZMQ_VERSION_MAJOR@.@ZMQ_VERSION_MINOR@.@ZMQ_VERSION_PATCH@
Libs: -L${libdir} -lzmq Libs: -L${libdir} -lzmq
Libs.private: -lstdc++
Cflags: -I${includedir} Cflags: -I${includedir}

View File

@ -7,4 +7,5 @@ Name: libzmq
Description: 0MQ c++ library Description: 0MQ c++ library
Version: @VERSION@ Version: @VERSION@
Libs: -L${libdir} -lzmq Libs: -L${libdir} -lzmq
Libs.private: -lstdc++
Cflags: -I${includedir} Cflags: -I${includedir}

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

Some files were not shown because too many files have changed in this diff Show More