rbczmq 1.7.1 → 1.7.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/.gitmodules +1 -1
- data/CHANGELOG.rdoc +4 -0
- data/Gemfile.lock +1 -1
- data/README.rdoc +5 -4
- data/ext/czmq/.gitignore +5 -0
- data/ext/czmq/.travis.yml +10 -1
- data/ext/czmq/AUTHORS +2 -0
- data/ext/czmq/COPYING.LESSER +3 -0
- data/ext/czmq/Makefile.am +13 -3
- data/ext/czmq/NEWS +132 -0
- data/ext/czmq/README.md +1553 -615
- data/ext/czmq/README.txt +188 -72
- data/ext/czmq/addons/Makefile.am +9 -0
- data/ext/czmq/addons/makecert.c +72 -0
- data/ext/czmq/builds/mingw32/Makefile.mingw32 +11 -3
- data/ext/czmq/builds/msvc/.gitignore +4 -1
- data/ext/czmq/builds/msvc/czmq.vcproj +4 -0
- data/ext/czmq/builds/msvc/czmq.vcxproj +6 -1
- data/ext/czmq/builds/msvc/czmq.vcxproj.filters +4 -1
- data/ext/{zeromq/cmake/Modules/zmq_version.cpp → czmq/builds/msvc/platform.h} +10 -9
- data/ext/czmq/configure.ac +64 -5
- data/ext/czmq/doc/Makefile.am +8 -1
- data/ext/czmq/doc/mkmans +17 -0
- data/ext/czmq/doc/zauth.txt +191 -0
- data/ext/czmq/doc/zbeacon.txt +13 -22
- data/ext/czmq/doc/zcert.txt +122 -0
- data/ext/czmq/doc/zcertstore.txt +107 -0
- data/ext/czmq/doc/zchunk.txt +77 -0
- data/ext/czmq/doc/zclock.txt +8 -0
- data/ext/czmq/doc/zconfig.txt +9 -63
- data/ext/czmq/doc/zctx.txt +26 -7
- data/ext/czmq/doc/zdir.txt +83 -0
- data/ext/czmq/doc/zfile.txt +130 -35
- data/ext/czmq/doc/zframe.txt +6 -39
- data/ext/czmq/doc/zhash.txt +55 -10
- data/ext/czmq/doc/zlist.txt +2 -4
- data/ext/czmq/doc/zloop.txt +7 -1
- data/ext/czmq/doc/zmsg.txt +75 -32
- data/ext/czmq/doc/zpoller.txt +88 -0
- data/ext/czmq/doc/zsocket.txt +50 -1
- data/ext/czmq/doc/zsockopt.txt +185 -251
- data/ext/czmq/doc/zstr.txt +14 -3
- data/ext/czmq/doc/zsys.txt +89 -1
- data/ext/czmq/doc/ztree.txt +21 -11
- data/ext/czmq/examples/security/LICENSE +18 -0
- data/ext/czmq/examples/security/README.txt +9 -0
- data/ext/czmq/examples/security/grasslands.c +29 -0
- data/ext/czmq/examples/security/hello.c +10 -0
- data/ext/czmq/examples/security/ironhouse.c +55 -0
- data/ext/czmq/examples/security/ironhouse2.c +103 -0
- data/ext/czmq/examples/security/stonehouse.c +51 -0
- data/ext/czmq/examples/security/strawhouse.c +44 -0
- data/ext/czmq/examples/security/woodhouse.c +40 -0
- data/ext/czmq/images/README_1.png +0 -0
- data/ext/czmq/images/README_2.png +0 -0
- data/ext/czmq/include/czmq.h +10 -4
- data/ext/czmq/include/czmq_prelude.h +42 -42
- data/ext/czmq/include/zauth.h +97 -0
- data/ext/czmq/include/zbeacon.h +0 -5
- data/ext/czmq/include/zcert.h +118 -0
- data/ext/czmq/include/zcertstore.h +78 -0
- data/ext/czmq/include/zchunk.h +87 -0
- data/ext/czmq/include/zclock.h +4 -0
- data/ext/czmq/include/zconfig.h +21 -12
- data/ext/czmq/include/zctx.h +34 -11
- data/ext/czmq/include/zdir.h +90 -0
- data/ext/czmq/include/zfile.h +104 -25
- data/ext/czmq/include/zframe.h +7 -20
- data/ext/czmq/include/zhash.h +13 -0
- data/ext/czmq/include/zlist.h +0 -4
- data/ext/czmq/include/zloop.h +5 -5
- data/ext/czmq/include/zmsg.h +59 -29
- data/ext/czmq/include/zmutex.h +5 -0
- data/ext/czmq/include/zpoller.h +72 -0
- data/ext/czmq/include/zsocket.h +12 -15
- data/ext/czmq/include/zsockopt.h +124 -121
- data/ext/czmq/include/zstr.h +12 -9
- data/ext/czmq/include/zsys.h +50 -2
- data/ext/czmq/mkdoc +1 -1
- data/ext/czmq/model/sockopts.xml +101 -21
- data/ext/czmq/scripts/sockopts.gsl +95 -41
- data/ext/czmq/src/Makefile.am +13 -0
- data/ext/czmq/src/czmq_selftest.c +16 -10
- data/ext/czmq/src/selftest +2 -2
- data/ext/czmq/src/zauth.c +714 -0
- data/ext/czmq/src/zbeacon.c +27 -35
- data/ext/czmq/src/zcert.c +463 -0
- data/ext/czmq/src/zcertstore.c +265 -0
- data/ext/czmq/src/zchunk.c +207 -0
- data/ext/czmq/src/zclock.c +18 -0
- data/ext/czmq/src/zconfig.c +116 -99
- data/ext/czmq/src/zctx.c +103 -18
- data/ext/czmq/src/zdir.c +409 -0
- data/ext/czmq/src/zfile.c +421 -130
- data/ext/czmq/src/zframe.c +28 -127
- data/ext/czmq/src/zhash.c +255 -139
- data/ext/czmq/src/zlist.c +2 -8
- data/ext/czmq/src/zloop.c +40 -13
- data/ext/czmq/src/zmsg.c +109 -141
- data/ext/czmq/src/zmutex.c +27 -1
- data/ext/czmq/src/zpoller.c +218 -0
- data/ext/czmq/src/zsocket.c +53 -66
- data/ext/czmq/src/zsockopt.c +2337 -682
- data/ext/czmq/src/zstr.c +48 -118
- data/ext/czmq/src/zsys.c +270 -3
- data/ext/czmq/src/zthread.c +2 -2
- data/ext/czmq/src/ztree.c +179 -180
- data/ext/rbczmq/beacon.c +1 -1
- data/ext/rbczmq/context.c +12 -3
- data/ext/rbczmq/context.h +7 -0
- data/ext/rbczmq/extconf.rb +13 -4
- data/ext/rbczmq/pollitem.c +1 -1
- data/ext/rbczmq/socket.c +34 -24
- data/ext/rbczmq/socket.h +3 -2
- data/ext/zeromq/AUTHORS +17 -3
- data/ext/zeromq/CMakeLists.txt +742 -339
- data/ext/zeromq/COPYING.LESSER +2 -0
- data/ext/zeromq/Makefile.am +3 -3
- data/ext/zeromq/NEWS +130 -1
- data/ext/zeromq/{README → README.md} +8 -9
- data/ext/zeromq/builds/cmake/Modules/FindAsciiDoc.cmake +24 -0
- data/ext/zeromq/builds/cmake/Modules/TestZMQVersion.cmake +18 -0
- data/ext/zeromq/builds/cmake/Modules/ZMQSourceRunChecks.cmake +129 -0
- data/ext/zeromq/{cmake → builds/cmake}/NSIS.template32.in +1 -1
- data/ext/zeromq/{cmake → builds/cmake}/NSIS.template64.in +1 -1
- data/ext/zeromq/builds/cmake/platform.hpp.in +88 -0
- data/ext/zeromq/builds/mingw32/Makefile.mingw32 +47 -0
- data/ext/zeromq/{src/i_msg_sink.hpp → builds/mingw32/platform.hpp} +10 -21
- data/ext/zeromq/builds/msvc/Makefile.am +5 -2
- data/ext/zeromq/builds/msvc/c_local_lat/c_local_lat.vcxproj +1 -1
- data/ext/zeromq/builds/msvc/c_local_lat/c_local_lat11.vcxproj +91 -0
- data/ext/zeromq/builds/msvc/c_local_thr/c_local_thr.vcproj +2 -0
- data/ext/zeromq/builds/msvc/c_local_thr/c_local_thr.vcxproj +21 -1
- data/ext/zeromq/builds/msvc/c_local_thr/c_local_thr11.vcxproj +111 -0
- data/ext/zeromq/builds/msvc/c_remote_lat/c_remote_lat.vcxproj +1 -1
- data/ext/zeromq/builds/msvc/c_remote_lat/c_remote_lat11.vcxproj +91 -0
- data/ext/zeromq/builds/msvc/c_remote_thr/c_remote_thr.vcproj +2 -0
- data/ext/zeromq/builds/msvc/c_remote_thr/c_remote_thr.vcxproj +21 -1
- data/ext/zeromq/builds/msvc/c_remote_thr/c_remote_thr11.vcxproj +111 -0
- data/ext/zeromq/builds/msvc/errno.cpp +1 -1
- data/ext/zeromq/builds/msvc/errno.hpp +1 -1
- data/ext/zeromq/builds/msvc/inproc_lat/inproc_lat.vcproj +176 -174
- data/ext/zeromq/builds/msvc/inproc_lat/inproc_lat.vcxproj +21 -1
- data/ext/zeromq/builds/msvc/inproc_lat/inproc_lat11.vcxproj +110 -0
- data/ext/zeromq/builds/msvc/inproc_thr/inproc_thr.vcproj +176 -174
- data/ext/zeromq/builds/msvc/inproc_thr/inproc_thr.vcxproj +21 -1
- data/ext/zeromq/builds/msvc/inproc_thr/inproc_thr11.vcxproj +110 -0
- data/ext/zeromq/builds/msvc/libzmq/libzmq.vcproj +997 -804
- data/ext/zeromq/builds/msvc/libzmq/libzmq.vcxproj +78 -2
- data/ext/zeromq/builds/msvc/libzmq/libzmq.vcxproj.filters +42 -6
- data/ext/zeromq/builds/msvc/libzmq/libzmq11.vcxproj +362 -0
- data/ext/zeromq/builds/msvc/msvc.sln +6 -0
- data/ext/zeromq/builds/msvc/msvc10.sln +36 -2
- data/ext/zeromq/builds/msvc/msvc11.sln +150 -0
- data/ext/zeromq/builds/msvc/properties/Static.props +15 -0
- data/ext/zeromq/builds/msvc/properties/ZeroMQ.props +0 -1
- data/ext/zeromq/builds/msvc/properties/ZeroMQ_Static.props +23 -0
- data/ext/zeromq/builds/redhat/zeromq.spec.in +2 -1
- data/ext/zeromq/{configure.in → configure.ac} +74 -15
- data/ext/zeromq/doc/Makefile.am +6 -4
- data/ext/zeromq/doc/zmq.txt +30 -3
- data/ext/zeromq/doc/zmq_bind.txt +2 -2
- data/ext/zeromq/doc/zmq_close.txt +2 -2
- data/ext/zeromq/doc/zmq_connect.txt +9 -7
- data/ext/zeromq/doc/zmq_ctx_destroy.txt +4 -3
- data/ext/zeromq/doc/zmq_ctx_get.txt +8 -3
- data/ext/zeromq/doc/zmq_ctx_new.txt +3 -2
- data/ext/zeromq/doc/zmq_ctx_set.txt +13 -1
- data/ext/zeromq/doc/zmq_ctx_shutdown.txt +52 -0
- data/ext/zeromq/doc/zmq_ctx_term.txt +67 -0
- data/ext/zeromq/doc/zmq_curve.txt +92 -0
- data/ext/zeromq/doc/zmq_curve_keypair.txt +56 -0
- data/ext/zeromq/doc/zmq_disconnect.txt +2 -2
- data/ext/zeromq/doc/zmq_epgm.txt +5 -4
- data/ext/zeromq/doc/zmq_errno.txt +2 -2
- data/ext/zeromq/doc/zmq_getsockopt.txt +149 -24
- data/ext/zeromq/doc/zmq_init.txt +2 -2
- data/ext/zeromq/doc/zmq_inproc.txt +2 -2
- data/ext/zeromq/doc/zmq_ipc.txt +10 -5
- data/ext/zeromq/doc/zmq_msg_close.txt +4 -3
- data/ext/zeromq/doc/zmq_msg_copy.txt +2 -2
- data/ext/zeromq/doc/zmq_msg_data.txt +2 -2
- data/ext/zeromq/doc/zmq_msg_get.txt +3 -3
- data/ext/zeromq/doc/zmq_msg_init.txt +2 -2
- data/ext/zeromq/doc/zmq_msg_init_data.txt +2 -2
- data/ext/zeromq/doc/zmq_msg_init_size.txt +2 -2
- data/ext/zeromq/doc/zmq_msg_more.txt +6 -4
- data/ext/zeromq/doc/zmq_msg_move.txt +2 -2
- data/ext/zeromq/doc/zmq_msg_recv.txt +3 -4
- data/ext/zeromq/doc/zmq_msg_send.txt +10 -7
- data/ext/zeromq/doc/zmq_msg_set.txt +2 -1
- data/ext/zeromq/doc/zmq_msg_size.txt +2 -2
- data/ext/zeromq/doc/zmq_null.txt +27 -0
- data/ext/zeromq/doc/zmq_pgm.txt +5 -4
- data/ext/zeromq/doc/zmq_plain.txt +37 -0
- data/ext/zeromq/doc/zmq_poll.txt +2 -6
- data/ext/zeromq/doc/zmq_proxy.txt +2 -1
- data/ext/zeromq/doc/zmq_recv.txt +2 -5
- data/ext/zeromq/doc/zmq_recvmsg.txt +3 -5
- data/ext/zeromq/doc/zmq_send.txt +9 -7
- data/ext/zeromq/doc/zmq_send_const.txt +103 -0
- data/ext/zeromq/doc/zmq_sendmsg.txt +8 -8
- data/ext/zeromq/doc/zmq_setsockopt.txt +291 -37
- data/ext/zeromq/doc/zmq_socket.txt +92 -21
- data/ext/zeromq/doc/zmq_socket_monitor.txt +102 -131
- data/ext/zeromq/doc/zmq_strerror.txt +3 -2
- data/ext/zeromq/doc/zmq_tcp.txt +4 -2
- data/ext/zeromq/doc/zmq_term.txt +3 -3
- data/ext/zeromq/doc/zmq_unbind.txt +2 -2
- data/ext/zeromq/doc/zmq_version.txt +3 -2
- data/ext/zeromq/doc/zmq_z85_decode.txt +50 -0
- data/ext/zeromq/doc/zmq_z85_encode.txt +57 -0
- data/ext/zeromq/foreign/openpgm/libpgm-5.2.122~dfsg.tar.gz +0 -0
- data/ext/zeromq/include/zmq.h +179 -136
- data/ext/zeromq/include/zmq_utils.h +44 -3
- data/ext/zeromq/perf/inproc_lat.cpp +2 -4
- data/ext/zeromq/perf/inproc_thr.cpp +1 -1
- data/ext/zeromq/perf/local_lat.cpp +1 -3
- data/ext/zeromq/perf/local_thr.cpp +1 -3
- data/ext/zeromq/perf/remote_lat.cpp +1 -3
- data/ext/zeromq/perf/remote_thr.cpp +1 -8
- data/ext/zeromq/src/Makefile.am +26 -7
- data/ext/zeromq/src/address.cpp +7 -8
- data/ext/zeromq/src/address.hpp +1 -2
- data/ext/zeromq/src/array.hpp +1 -3
- data/ext/zeromq/src/atomic_counter.hpp +11 -3
- data/ext/zeromq/src/atomic_ptr.hpp +9 -3
- data/ext/zeromq/src/blob.hpp +2 -2
- data/ext/zeromq/src/clock.cpp +3 -4
- data/ext/zeromq/src/clock.hpp +1 -2
- data/ext/zeromq/src/command.hpp +2 -3
- data/ext/zeromq/src/config.hpp +1 -3
- data/ext/zeromq/src/ctx.cpp +154 -15
- data/ext/zeromq/src/ctx.hpp +34 -3
- data/ext/zeromq/src/curve_client.cpp +410 -0
- data/ext/zeromq/src/curve_client.hpp +109 -0
- data/ext/zeromq/src/curve_server.cpp +629 -0
- data/ext/zeromq/src/curve_server.hpp +120 -0
- data/ext/zeromq/src/dbuffer.hpp +134 -0
- data/ext/zeromq/src/dealer.cpp +52 -60
- data/ext/zeromq/src/dealer.hpp +12 -26
- data/ext/zeromq/src/decoder.hpp +27 -102
- data/ext/zeromq/src/devpoll.cpp +1 -3
- data/ext/zeromq/src/devpoll.hpp +1 -3
- data/ext/zeromq/src/dist.cpp +17 -15
- data/ext/zeromq/src/dist.hpp +5 -6
- data/ext/zeromq/src/encoder.hpp +32 -52
- data/ext/zeromq/src/epoll.cpp +1 -3
- data/ext/zeromq/src/epoll.hpp +1 -3
- data/ext/zeromq/src/err.cpp +2 -4
- data/ext/zeromq/src/err.hpp +7 -4
- data/ext/zeromq/src/fd.hpp +1 -2
- data/ext/zeromq/src/fq.cpp +2 -5
- data/ext/zeromq/src/fq.hpp +2 -4
- data/ext/zeromq/src/i_decoder.hpp +11 -9
- data/ext/zeromq/src/i_encoder.hpp +7 -11
- data/ext/zeromq/src/i_engine.hpp +3 -3
- data/ext/zeromq/src/i_poll_events.hpp +1 -3
- data/ext/zeromq/src/io_object.cpp +1 -3
- data/ext/zeromq/src/io_object.hpp +1 -3
- data/ext/zeromq/src/io_thread.cpp +1 -3
- data/ext/zeromq/src/io_thread.hpp +1 -3
- data/ext/zeromq/src/ip.cpp +46 -5
- data/ext/zeromq/src/ip.hpp +7 -4
- data/ext/zeromq/src/ipc_address.cpp +13 -2
- data/ext/zeromq/src/ipc_address.hpp +1 -2
- data/ext/zeromq/src/ipc_connecter.cpp +3 -3
- data/ext/zeromq/src/ipc_connecter.hpp +1 -2
- data/ext/zeromq/src/ipc_listener.cpp +15 -10
- data/ext/zeromq/src/ipc_listener.hpp +1 -2
- data/ext/zeromq/src/kqueue.cpp +11 -3
- data/ext/zeromq/src/kqueue.hpp +7 -3
- data/ext/zeromq/src/lb.cpp +13 -11
- data/ext/zeromq/src/lb.hpp +10 -5
- data/ext/zeromq/src/libzmq.pc.cmake.in +10 -0
- data/ext/zeromq/src/likely.hpp +1 -2
- data/ext/zeromq/src/mailbox.cpp +1 -4
- data/ext/zeromq/src/mailbox.hpp +8 -3
- data/ext/zeromq/src/mechanism.cpp +163 -0
- data/ext/zeromq/src/mechanism.hpp +101 -0
- data/ext/zeromq/src/msg.cpp +38 -18
- data/ext/zeromq/src/msg.hpp +19 -7
- data/ext/zeromq/src/mtrie.cpp +16 -14
- data/ext/zeromq/src/mtrie.hpp +1 -3
- data/ext/zeromq/src/mutex.hpp +42 -3
- data/ext/zeromq/src/null_mechanism.cpp +282 -0
- data/ext/zeromq/src/null_mechanism.hpp +65 -0
- data/ext/zeromq/src/object.cpp +29 -3
- data/ext/zeromq/src/object.hpp +8 -5
- data/ext/zeromq/src/options.cpp +557 -485
- data/ext/zeromq/src/options.hpp +38 -24
- data/ext/zeromq/src/own.cpp +1 -2
- data/ext/zeromq/src/own.hpp +1 -2
- data/ext/zeromq/src/pair.cpp +8 -25
- data/ext/zeromq/src/pair.hpp +5 -22
- data/ext/zeromq/src/pgm_receiver.cpp +80 -67
- data/ext/zeromq/src/pgm_receiver.hpp +11 -10
- data/ext/zeromq/src/pgm_sender.cpp +37 -16
- data/ext/zeromq/src/pgm_sender.hpp +12 -6
- data/ext/zeromq/src/pgm_socket.cpp +8 -8
- data/ext/zeromq/src/pgm_socket.hpp +1 -4
- data/ext/zeromq/src/pipe.cpp +110 -72
- data/ext/zeromq/src/pipe.hpp +36 -27
- data/ext/zeromq/src/plain_mechanism.cpp +482 -0
- data/ext/zeromq/src/plain_mechanism.hpp +88 -0
- data/ext/zeromq/src/poll.cpp +1 -3
- data/ext/zeromq/src/poll.hpp +1 -3
- data/ext/zeromq/src/poller.hpp +1 -3
- data/ext/zeromq/src/poller_base.cpp +3 -3
- data/ext/zeromq/src/poller_base.hpp +1 -2
- data/ext/zeromq/src/precompiled.cpp +1 -2
- data/ext/zeromq/src/precompiled.hpp +1 -2
- data/ext/zeromq/src/proxy.cpp +1 -2
- data/ext/zeromq/src/proxy.hpp +1 -2
- data/ext/zeromq/src/pub.cpp +2 -16
- data/ext/zeromq/src/pub.hpp +2 -19
- data/ext/zeromq/src/pull.cpp +7 -24
- data/ext/zeromq/src/pull.hpp +4 -21
- data/ext/zeromq/src/push.cpp +8 -22
- data/ext/zeromq/src/push.hpp +4 -21
- data/ext/zeromq/src/random.cpp +1 -2
- data/ext/zeromq/src/random.hpp +1 -2
- data/ext/zeromq/src/raw_decoder.cpp +63 -0
- data/ext/zeromq/src/raw_decoder.hpp +66 -0
- data/ext/zeromq/src/raw_encoder.cpp +40 -0
- data/ext/zeromq/src/raw_encoder.hpp +60 -0
- data/ext/zeromq/src/reaper.cpp +12 -2
- data/ext/zeromq/src/reaper.hpp +6 -2
- data/ext/zeromq/src/rep.cpp +7 -21
- data/ext/zeromq/src/rep.hpp +3 -20
- data/ext/zeromq/src/req.cpp +132 -38
- data/ext/zeromq/src/req.hpp +27 -8
- data/ext/zeromq/src/router.cpp +109 -65
- data/ext/zeromq/src/router.hpp +9 -23
- data/ext/zeromq/src/select.cpp +1 -3
- data/ext/zeromq/src/select.hpp +1 -3
- data/ext/zeromq/src/session_base.cpp +164 -118
- data/ext/zeromq/src/session_base.hpp +29 -22
- data/ext/zeromq/src/signaler.cpp +127 -19
- data/ext/zeromq/src/signaler.hpp +20 -3
- data/ext/zeromq/src/socket_base.cpp +167 -134
- data/ext/zeromq/src/socket_base.hpp +18 -20
- data/ext/zeromq/src/stdint.hpp +1 -2
- data/ext/zeromq/src/stream.cpp +257 -0
- data/ext/zeromq/src/stream.hpp +97 -0
- data/ext/zeromq/src/stream_engine.cpp +405 -157
- data/ext/zeromq/src/stream_engine.hpp +72 -23
- data/ext/zeromq/src/sub.cpp +5 -18
- data/ext/zeromq/src/sub.hpp +2 -19
- data/ext/zeromq/src/tcp.cpp +23 -3
- data/ext/zeromq/src/tcp.hpp +7 -3
- data/ext/zeromq/src/tcp_address.cpp +35 -46
- data/ext/zeromq/src/tcp_address.hpp +7 -12
- data/ext/zeromq/src/tcp_connecter.cpp +10 -5
- data/ext/zeromq/src/tcp_connecter.hpp +1 -3
- data/ext/zeromq/src/tcp_listener.cpp +19 -8
- data/ext/zeromq/src/tcp_listener.hpp +1 -3
- data/ext/zeromq/src/thread.cpp +2 -4
- data/ext/zeromq/src/thread.hpp +1 -3
- data/ext/zeromq/src/trie.cpp +122 -125
- data/ext/zeromq/src/trie.hpp +1 -4
- data/ext/zeromq/src/v1_decoder.cpp +77 -91
- data/ext/zeromq/src/v1_decoder.hpp +10 -21
- data/ext/zeromq/src/v1_encoder.cpp +24 -62
- data/ext/zeromq/src/v1_encoder.hpp +7 -18
- data/ext/zeromq/src/v2_decoder.cpp +142 -0
- data/ext/zeromq/src/v2_decoder.hpp +57 -0
- data/ext/zeromq/src/v2_encoder.cpp +67 -0
- data/ext/zeromq/src/{i_msg_source.hpp → v2_encoder.hpp} +20 -15
- data/ext/zeromq/src/{v1_protocol.hpp → v2_protocol.hpp} +7 -11
- data/ext/zeromq/src/windows.hpp +2 -4
- data/ext/zeromq/src/wire.hpp +5 -6
- data/ext/zeromq/src/xpub.cpp +37 -46
- data/ext/zeromq/src/xpub.hpp +7 -23
- data/ext/zeromq/src/xsub.cpp +26 -40
- data/ext/zeromq/src/xsub.hpp +5 -21
- data/ext/zeromq/src/ypipe.hpp +3 -4
- data/ext/zeromq/src/ypipe_base.hpp +44 -0
- data/ext/zeromq/src/ypipe_conflate.hpp +127 -0
- data/ext/zeromq/src/yqueue.hpp +3 -7
- data/ext/zeromq/src/zmq.cpp +76 -96
- data/ext/zeromq/src/zmq_utils.cpp +146 -8
- data/ext/zeromq/tests/Makefile.am +56 -8
- data/ext/zeromq/tests/test_abstract_ipc.cpp +57 -0
- data/ext/zeromq/tests/test_conflate.cpp +75 -0
- data/ext/zeromq/tests/test_connect_resolve.cpp +14 -15
- data/ext/zeromq/tests/test_ctx_destroy.cpp +90 -0
- data/ext/zeromq/tests/test_ctx_options.cpp +52 -0
- data/ext/zeromq/tests/test_disconnect_inproc.cpp +35 -30
- data/ext/zeromq/tests/test_fork.cpp +81 -0
- data/ext/zeromq/tests/test_hwm.cpp +251 -35
- data/ext/zeromq/tests/test_immediate.cpp +229 -0
- data/ext/zeromq/tests/test_inproc_connect.cpp +339 -0
- data/ext/zeromq/tests/test_invalid_rep.cpp +9 -13
- data/ext/zeromq/tests/test_iov.cpp +106 -0
- data/ext/zeromq/tests/test_issue_566.cpp +85 -0
- data/ext/zeromq/tests/test_last_endpoint.cpp +14 -18
- data/ext/zeromq/tests/test_linger.cpp +93 -0
- data/ext/zeromq/tests/test_monitor.cpp +112 -129
- data/ext/zeromq/tests/test_msg_flags.cpp +17 -16
- data/ext/zeromq/tests/test_pair_inproc.cpp +25 -7
- data/ext/zeromq/tests/test_pair_ipc.cpp +4 -7
- data/ext/zeromq/tests/test_pair_tcp.cpp +4 -8
- data/ext/zeromq/tests/test_probe_router.cpp +72 -0
- data/ext/zeromq/tests/test_req_correlate.cpp +177 -0
- data/ext/zeromq/tests/test_req_relaxed.cpp +116 -0
- data/ext/zeromq/tests/test_reqrep_device.cpp +9 -17
- data/ext/zeromq/tests/test_reqrep_inproc.cpp +4 -7
- data/ext/zeromq/tests/test_reqrep_ipc.cpp +4 -7
- data/ext/zeromq/tests/test_reqrep_tcp.cpp +4 -8
- data/ext/zeromq/tests/test_router_mandatory.cpp +41 -22
- data/ext/zeromq/tests/test_security_curve.cpp +212 -0
- data/ext/zeromq/tests/test_security_null.cpp +148 -0
- data/ext/zeromq/tests/test_security_plain.cpp +150 -0
- data/ext/zeromq/tests/test_shutdown_stress.cpp +10 -23
- data/ext/zeromq/tests/test_spec_dealer.cpp +254 -0
- data/ext/zeromq/tests/test_spec_pushpull.cpp +293 -0
- data/ext/zeromq/tests/test_spec_rep.cpp +155 -0
- data/ext/zeromq/tests/test_spec_req.cpp +253 -0
- data/ext/zeromq/tests/test_spec_router.cpp +204 -0
- data/ext/zeromq/tests/test_stream.cpp +228 -0
- data/ext/zeromq/tests/test_sub_forward.cpp +14 -22
- data/ext/zeromq/tests/test_system.cpp +82 -0
- data/ext/zeromq/tests/test_term_endpoint.cpp +17 -31
- data/ext/zeromq/tests/test_timeo.cpp +34 -78
- data/ext/zeromq/tests/testutil.hpp +211 -26
- data/ext/zeromq/tools/Makefile.am +9 -0
- data/ext/zeromq/tools/curve_keygen.c +58 -0
- data/lib/zmq/version.rb +1 -1
- data/test/test_socket.rb +4 -3
- metadata +114 -15
- data/ext/zeromq/cmake/Modules/TestZMQVersion.cmake +0 -35
- data/ext/zeromq/foreign/openpgm/libpgm-5.1.118~dfsg.tar.gz +0 -0
- data/ext/zeromq/src/decoder.cpp +0 -166
- data/ext/zeromq/src/encoder.cpp +0 -102
- data/ext/zeromq/tests/test_connect_delay.cpp +0 -260
data/ext/czmq/src/zthread.c
CHANGED
@@ -179,7 +179,7 @@ zthread_fork (zctx_t *ctx, zthread_attached_fn *thread_fn, void *args)
|
|
179
179
|
{
|
180
180
|
shim_t *shim = NULL;
|
181
181
|
// Create our end of the pipe
|
182
|
-
void *pipe =
|
182
|
+
void *pipe = zctx__socket_pipe (ctx);
|
183
183
|
if (pipe)
|
184
184
|
zsocket_bind (pipe, "inproc://zctx-pipe-%p", pipe);
|
185
185
|
else
|
@@ -198,7 +198,7 @@ zthread_fork (zctx_t *ctx, zthread_attached_fn *thread_fn, void *args)
|
|
198
198
|
return NULL;
|
199
199
|
|
200
200
|
// Connect child pipe to our pipe
|
201
|
-
shim->pipe =
|
201
|
+
shim->pipe = zctx__socket_pipe (shim->ctx);
|
202
202
|
if (!shim->pipe)
|
203
203
|
return NULL;
|
204
204
|
zsocket_connect (shim->pipe, "inproc://zctx-pipe-%p", pipe);
|
data/ext/czmq/src/ztree.c
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
/* =========================================================================
|
2
2
|
ztree - generic type-free red-black tree container
|
3
3
|
|
4
|
+
TODO: code style needs cleanup to match CLASS guideliness
|
5
|
+
- poor variable names like 'x'
|
6
|
+
- indentation and if/else layouts
|
7
|
+
|
4
8
|
-------------------------------------------------------------------------
|
5
9
|
Copyright (c) 2013 Stephen Hemminger <stephen@networkplumber.org>
|
6
10
|
Copyright other contributors as noted in the AUTHORS file.
|
@@ -22,14 +26,13 @@
|
|
22
26
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
23
27
|
=========================================================================
|
24
28
|
|
25
|
-
Derived from Emin Martianan's Red Black which is licensed for free use.
|
26
|
-
|
27
|
-
http://web.mit.edu/~emin/www.old/source_code/red_black_tree/index.html
|
28
29
|
*/
|
29
30
|
|
30
31
|
/*
|
31
32
|
@header
|
32
33
|
Red black tree container
|
34
|
+
Derived from Emin Martianan's Red Black which is licensed for free use.
|
35
|
+
http://web.mit.edu/~emin/www.old/source_code/red_black_tree/index.html
|
33
36
|
@discuss
|
34
37
|
@end
|
35
38
|
*/
|
@@ -41,7 +44,7 @@
|
|
41
44
|
typedef struct _node_t {
|
42
45
|
char *key; // User's key
|
43
46
|
void *value; // and datum
|
44
|
-
bool red;
|
47
|
+
bool red; // if !red then node is black
|
45
48
|
struct _node_t *left, *right, *parent;
|
46
49
|
zhash_free_fn *free_fn; // Value free function if any
|
47
50
|
} node_t;
|
@@ -54,7 +57,7 @@ struct _ztree_t {
|
|
54
57
|
// The point of using these sentinels is so that the root
|
55
58
|
// and nil nodes do not require special cases in the code
|
56
59
|
node_t root; // Red-black tree root
|
57
|
-
node_t nil;
|
60
|
+
node_t nil; // See above
|
58
61
|
bool autofree; // If true, free value in destructor
|
59
62
|
};
|
60
63
|
|
@@ -66,9 +69,9 @@ ztree_new (ztree_compare_fn *compare)
|
|
66
69
|
{
|
67
70
|
assert (compare);
|
68
71
|
|
69
|
-
ztree_t *self = zmalloc (sizeof (ztree_t));
|
72
|
+
ztree_t *self = (ztree_t *) zmalloc (sizeof (ztree_t));
|
70
73
|
if (!self)
|
71
|
-
|
74
|
+
return NULL;
|
72
75
|
|
73
76
|
self->compare = compare;
|
74
77
|
|
@@ -88,7 +91,7 @@ s_free_value (ztree_t *self, node_t *x)
|
|
88
91
|
{
|
89
92
|
if (x->free_fn)
|
90
93
|
(x->free_fn) (x->value);
|
91
|
-
else
|
94
|
+
else
|
92
95
|
if (self->autofree)
|
93
96
|
free (x->value);
|
94
97
|
}
|
@@ -149,16 +152,16 @@ s_left_rotate (ztree_t *tree, node_t *x)
|
|
149
152
|
x->right = y->left;
|
150
153
|
|
151
154
|
if (y->left != nil)
|
152
|
-
|
155
|
+
y->left->parent=x;
|
153
156
|
|
154
157
|
y->parent = x->parent;
|
155
158
|
|
156
159
|
// instead of checking if x->parent is the root as in the book, we
|
157
160
|
// count on the root sentinel to implicitly take care of this case
|
158
161
|
if( x == x->parent->left)
|
159
|
-
|
162
|
+
x->parent->left = y;
|
160
163
|
else
|
161
|
-
|
164
|
+
x->parent->right = y;
|
162
165
|
|
163
166
|
y->left = x;
|
164
167
|
x->parent = y;
|
@@ -176,15 +179,15 @@ s_right_rotate (ztree_t *tree, node_t *y)
|
|
176
179
|
y->left = x->right;
|
177
180
|
|
178
181
|
if (nil != x->right)
|
179
|
-
|
182
|
+
x->right->parent = y;
|
180
183
|
|
181
184
|
// instead of checking if x->parent is the root as in the book,
|
182
185
|
// we count on the root sentinel to implicitly take care of this case
|
183
186
|
x->parent = y->parent;
|
184
187
|
if (y == y->parent->left)
|
185
|
-
|
188
|
+
y->parent->left = x;
|
186
189
|
else
|
187
|
-
|
190
|
+
y->parent->right = x;
|
188
191
|
|
189
192
|
x->right = y;
|
190
193
|
y->parent = x;
|
@@ -207,25 +210,25 @@ static node_t *s_insert_node (ztree_t *tree, node_t *z)
|
|
207
210
|
node_t *y = root;
|
208
211
|
node_t *x = root->left;
|
209
212
|
while (x != nil) {
|
210
|
-
|
211
|
-
|
213
|
+
y = x;
|
214
|
+
int cmp = tree->compare (x->key, z->key);
|
212
215
|
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
+
// do not allow duplicate keys
|
217
|
+
if (cmp == 0)
|
218
|
+
return x;
|
216
219
|
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
220
|
+
if (cmp > 0) // x.key > z.key
|
221
|
+
x = x->left;
|
222
|
+
else // x,key <= z.key
|
223
|
+
x = x->right;
|
221
224
|
}
|
222
225
|
|
223
226
|
z->parent = y;
|
224
227
|
if ( y == root ||
|
225
|
-
|
226
|
-
|
228
|
+
tree->compare (y->key, z->key) > 0) // y.key > z.key
|
229
|
+
y->left = z;
|
227
230
|
else
|
228
|
-
|
231
|
+
y->right = z;
|
229
232
|
|
230
233
|
assert(!tree->nil.red);
|
231
234
|
return NULL;
|
@@ -236,40 +239,40 @@ static node_t *s_insert_node (ztree_t *tree, node_t *z)
|
|
236
239
|
static void s_insert_recolor (ztree_t *tree, node_t *x)
|
237
240
|
{
|
238
241
|
while (x->parent->red) { // use sentinel instead of checking for root
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
242
|
+
if (x->parent == x->parent->parent->left) {
|
243
|
+
node_t *y = x->parent->parent->right;
|
244
|
+
if (y->red) {
|
245
|
+
x->parent->red = false;
|
246
|
+
y->red = false;
|
247
|
+
x->parent->parent->red = true;
|
248
|
+
x = x->parent->parent;
|
249
|
+
} else {
|
250
|
+
if (x == x->parent->right) {
|
251
|
+
x = x->parent;
|
252
|
+
s_left_rotate (tree, x);
|
253
|
+
}
|
254
|
+
|
255
|
+
x->parent->red = false;
|
256
|
+
x->parent->parent->red = true;
|
257
|
+
s_right_rotate (tree, x->parent->parent);
|
258
|
+
}
|
259
|
+
} else { //case for x->parent == x->parent->parent->right
|
260
|
+
node_t *y = x->parent->parent->left;
|
261
|
+
if (y->red) {
|
262
|
+
x->parent->red = false;
|
263
|
+
y->red = false;
|
264
|
+
x->parent->parent->red = true;
|
265
|
+
x = x->parent->parent;
|
266
|
+
} else {
|
267
|
+
if (x == x->parent->left) {
|
268
|
+
x = x->parent;
|
269
|
+
s_right_rotate (tree,x);
|
270
|
+
}
|
271
|
+
x->parent->red = false;
|
272
|
+
x->parent->parent->red = true;
|
273
|
+
s_left_rotate (tree,x->parent->parent);
|
274
|
+
}
|
275
|
+
}
|
273
276
|
}
|
274
277
|
tree->root.left->red = false;
|
275
278
|
|
@@ -286,10 +289,10 @@ s_lookup (ztree_t *tree, const char *q)
|
|
286
289
|
node_t *x = tree->root.left;
|
287
290
|
|
288
291
|
while (x != nil) {
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
292
|
+
int cmp = tree->compare (x->key, q);
|
293
|
+
if (cmp == 0)
|
294
|
+
break;
|
295
|
+
x = cmp > 0 ? x->left : x->right;
|
293
296
|
}
|
294
297
|
|
295
298
|
return x;
|
@@ -306,7 +309,7 @@ ztree_insert (ztree_t *self, const char *key, void *value)
|
|
306
309
|
assert (self);
|
307
310
|
assert (key);
|
308
311
|
|
309
|
-
node_t *x = zmalloc (sizeof (node_t));
|
312
|
+
node_t *x = (node_t *) zmalloc (sizeof (node_t));
|
310
313
|
if (!x)
|
311
314
|
return -1;
|
312
315
|
|
@@ -320,11 +323,11 @@ ztree_insert (ztree_t *self, const char *key, void *value)
|
|
320
323
|
|
321
324
|
// unwind if duplicate node
|
322
325
|
if (s_insert_node (self, x)) {
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
326
|
+
free (x->key);
|
327
|
+
if (self->autofree)
|
328
|
+
free (value);
|
329
|
+
free (x);
|
330
|
+
return -1;
|
328
331
|
}
|
329
332
|
|
330
333
|
s_insert_recolor (self, x);
|
@@ -342,7 +345,7 @@ ztree_update (ztree_t *self, const char *key, void *value)
|
|
342
345
|
assert (self);
|
343
346
|
assert (key);
|
344
347
|
|
345
|
-
node_t *x = zmalloc (sizeof (node_t));
|
348
|
+
node_t *x = (node_t *) zmalloc (sizeof (node_t));
|
346
349
|
if (!x)
|
347
350
|
return;
|
348
351
|
|
@@ -356,12 +359,12 @@ ztree_update (ztree_t *self, const char *key, void *value)
|
|
356
359
|
|
357
360
|
node_t *y = s_insert_node (self, x);
|
358
361
|
if (y) {
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
362
|
+
s_free_value (self, y);
|
363
|
+
y->value = value;
|
364
|
+
free (x->key);
|
365
|
+
free (x);
|
363
366
|
} else {
|
364
|
-
|
367
|
+
s_insert_recolor (self, x);
|
365
368
|
}
|
366
369
|
}
|
367
370
|
|
@@ -373,55 +376,55 @@ static void s_delete_fix (ztree_t *tree, node_t *x)
|
|
373
376
|
node_t *root = tree->root.left;
|
374
377
|
|
375
378
|
while( (!x->red) && (root != x)) {
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
379
|
+
if (x == x->parent->left) {
|
380
|
+
node_t *w = x->parent->right;
|
381
|
+
if (w->red) {
|
382
|
+
w->red = false;
|
383
|
+
x->parent->red = true;
|
384
|
+
s_left_rotate (tree,x->parent);
|
385
|
+
w = x->parent->right;
|
386
|
+
}
|
387
|
+
if ( (!w->right->red) && (!w->left->red) ) {
|
388
|
+
w->red = true;
|
389
|
+
x = x->parent;
|
390
|
+
} else {
|
391
|
+
if (!w->right->red) {
|
392
|
+
w->left->red = false;
|
393
|
+
w->red = true;
|
394
|
+
s_right_rotate (tree,w);
|
395
|
+
w = x->parent->right;
|
396
|
+
}
|
397
|
+
w->red = x->parent->red;
|
398
|
+
x->parent->red = false;
|
399
|
+
w->right->red = false;
|
400
|
+
s_left_rotate (tree,x->parent);
|
401
|
+
x = root; // this is to exit while loop
|
402
|
+
}
|
403
|
+
} else { // the code below is has left and right switched from above
|
404
|
+
node_t *w = x->parent->left;
|
405
|
+
if (w->red) {
|
406
|
+
w->red = false;
|
407
|
+
x->parent->red = true;
|
408
|
+
s_right_rotate (tree,x->parent);
|
409
|
+
w = x->parent->left;
|
410
|
+
}
|
411
|
+
if ( (!w->right->red) && (!w->left->red) ) {
|
412
|
+
w->red = true;
|
413
|
+
x = x->parent;
|
414
|
+
} else {
|
415
|
+
if (!w->left->red) {
|
416
|
+
w->right->red = false;
|
417
|
+
w->red = true;
|
418
|
+
s_left_rotate (tree,w);
|
419
|
+
w = x->parent->left;
|
420
|
+
}
|
421
|
+
w->red=x->parent->red;
|
422
|
+
x->parent->red = false;
|
423
|
+
w->left->red = false;
|
424
|
+
s_right_rotate (tree,x->parent);
|
425
|
+
x = root; // this is to exit while loop
|
426
|
+
}
|
427
|
+
}
|
425
428
|
}
|
426
429
|
x->red = false;
|
427
430
|
|
@@ -438,18 +441,18 @@ s_successor (ztree_t *tree, const node_t *x)
|
|
438
441
|
node_t *root = &tree->root;
|
439
442
|
|
440
443
|
if (nil != (y = x->right)) { // assignment to y is intentional
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
+
while (y->left != nil) { // returns the minium of the right subtree of x
|
445
|
+
y = y->left;
|
446
|
+
}
|
444
447
|
} else {
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
448
|
+
y = x->parent;
|
449
|
+
while (x == y->right) { // sentinel used instead of checking for nil
|
450
|
+
x = y;
|
451
|
+
y = y->parent;
|
452
|
+
}
|
453
|
+
|
454
|
+
if (y == root)
|
455
|
+
return nil;
|
453
456
|
}
|
454
457
|
|
455
458
|
return y;
|
@@ -465,47 +468,47 @@ s_delete (ztree_t *tree, node_t *z)
|
|
465
468
|
node_t *root = &tree->root;
|
466
469
|
|
467
470
|
if (z->left == nil || z->right == nil)
|
468
|
-
|
471
|
+
y = z;
|
469
472
|
else
|
470
|
-
|
473
|
+
y = s_successor (tree, z);
|
471
474
|
|
472
475
|
x = (y->left == nil) ? y->right : y->left;
|
473
476
|
|
474
477
|
if (root == (x->parent = y->parent)) { // assignment of y->p to x->p is intentional
|
475
|
-
|
478
|
+
root->left = x;
|
476
479
|
} else {
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
480
|
+
if (y == y->parent->left)
|
481
|
+
y->parent->left = x;
|
482
|
+
else
|
483
|
+
y->parent->right = x;
|
481
484
|
}
|
482
485
|
|
483
486
|
if (y != z) {
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
487
|
+
assert(y != &tree->nil);
|
488
|
+
|
489
|
+
// y is the node to splice out and x is its child
|
490
|
+
if (!y->red)
|
491
|
+
s_delete_fix (tree, x);
|
492
|
+
|
493
|
+
free (z->key);
|
494
|
+
s_free_value (tree, z);
|
495
|
+
|
496
|
+
y->left = z->left;
|
497
|
+
y->right = z->right;
|
498
|
+
y->parent = z->parent;
|
499
|
+
y->red = z->red;
|
500
|
+
z->left->parent = z->right->parent=y;
|
501
|
+
if (z == z->parent->left)
|
502
|
+
z->parent->left = y;
|
503
|
+
else
|
504
|
+
z->parent->right = y;
|
505
|
+
free(z);
|
503
506
|
} else {
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
507
|
+
free (y->key);
|
508
|
+
s_free_value (tree, y);
|
509
|
+
if (!y->red)
|
510
|
+
s_delete_fix (tree, x);
|
511
|
+
free(y);
|
509
512
|
}
|
510
513
|
|
511
514
|
assert(!tree->nil.red);
|
@@ -554,7 +557,7 @@ ztree_freefn (ztree_t *self, const char *key, ztree_free_fn *free_fn)
|
|
554
557
|
assert (self);
|
555
558
|
assert (key);
|
556
559
|
|
557
|
-
node_t *x = ztree_lookup (self, key);
|
560
|
+
node_t *x = (node_t *) ztree_lookup (self, key);
|
558
561
|
if (x) {
|
559
562
|
x->free_fn = free_fn;
|
560
563
|
return x->value;
|
@@ -567,7 +570,7 @@ ztree_freefn (ztree_t *self, const char *key, ztree_free_fn *free_fn)
|
|
567
570
|
// Recursively walk tree, stopping if callback returns non-zero
|
568
571
|
|
569
572
|
static int s_walk (ztree_t *tree, node_t *x,
|
570
|
-
|
573
|
+
ztree_walk_fn *callback, void *argument)
|
571
574
|
{
|
572
575
|
if (x == &tree->nil)
|
573
576
|
return 0; // empty
|
@@ -613,7 +616,7 @@ ztree_size (ztree_t *self)
|
|
613
616
|
// Local helper to insert key into list
|
614
617
|
static int s_addkey (const char *key, void *value, void *arg)
|
615
618
|
{
|
616
|
-
zlist_t *keys = arg;
|
619
|
+
zlist_t *keys = (zlist_t *) arg;
|
617
620
|
zlist_append (keys, (char *) key);
|
618
621
|
return 0;
|
619
622
|
}
|
@@ -634,7 +637,7 @@ ztree_keys (ztree_t *self)
|
|
634
637
|
// Local helper to duplicate tree
|
635
638
|
static int s_dupkey (const char *key, void *value, void *arg)
|
636
639
|
{
|
637
|
-
ztree_t *copy = arg;
|
640
|
+
ztree_t *copy = (ztree_t *) arg;
|
638
641
|
ztree_insert (copy, key, value);
|
639
642
|
return 0;
|
640
643
|
}
|
@@ -654,7 +657,7 @@ ztree_dup (ztree_t *self)
|
|
654
657
|
|
655
658
|
ztree_t *copy = ztree_new (self->compare);
|
656
659
|
if (copy) {
|
657
|
-
|
660
|
+
ztree_autofree (copy);
|
658
661
|
ztree_walk (self, s_dupkey, copy);
|
659
662
|
}
|
660
663
|
|
@@ -665,7 +668,7 @@ ztree_dup (ztree_t *self)
|
|
665
668
|
|
666
669
|
static int s_print (const char *key, void *value, void *arg)
|
667
670
|
{
|
668
|
-
FILE *handle = arg;
|
671
|
+
FILE *handle = (FILE *) arg;
|
669
672
|
fprintf (handle, "%s=%s\n", key, (char *) value);
|
670
673
|
return 0;
|
671
674
|
}
|
@@ -794,7 +797,7 @@ ztree_test (int verbose)
|
|
794
797
|
pred = zlist_first (keys);
|
795
798
|
assert (pred);
|
796
799
|
while ((key = zlist_next (keys))) {
|
797
|
-
assert (strcmp (key, pred) > 0);
|
800
|
+
assert (strcmp ((char *) key, (char *) pred) > 0);
|
798
801
|
pred = key;
|
799
802
|
}
|
800
803
|
zlist_destroy (&keys);
|
@@ -813,18 +816,14 @@ ztree_test (int verbose)
|
|
813
816
|
|
814
817
|
// Test save and load
|
815
818
|
ztree_save (tree, ".cache");
|
816
|
-
copy = ztree_new (
|
819
|
+
copy = ztree_new (strcmp);
|
817
820
|
ztree_load (copy, ".cache");
|
818
821
|
assert (ztree_size (copy) == ztree_size (tree));
|
819
822
|
value = (char *) ztree_lookup (copy, "DEADBEEF");
|
820
823
|
assert (value);
|
821
824
|
assert (streq (value, "dead beef"));
|
822
825
|
ztree_destroy (©);
|
823
|
-
|
824
|
-
DeleteFile (".cache");
|
825
|
-
#else
|
826
|
-
unlink (".cache");
|
827
|
-
#endif
|
826
|
+
zsys_file_delete (".cache");
|
828
827
|
|
829
828
|
// Delete some nodes
|
830
829
|
assert (ztree_size (tree) == 4);
|