115 Commits

Author SHA1 Message Date
Harald Nøkland
da1b5e3e23 Add comments, optimize some functions, add static asserts
Add comments to all functions. Optimize move constructor and move assigment operator, remove size check inside pop/remove/peek. Static assert in pushtyp/addtyp/poptyp in order to avoid pitfall with std::string (pushstr/addstr/popstr should be used for that). Add sanity check for poptyp, size of message must match desired type.
2016-10-23 00:27:12 +02:00
Constantin Rack
0791496622 Merge pull request #82 from staticfloat/master
Enable passing flags in to `send()` and `recv()`
2016-10-22 09:27:47 +02:00
Ben Gray
7faa9b0618 Merge pull request #85 from serge-medvedev/context-close-destruct-assert-issue
Failing assertion in dtor of context_t
2016-09-19 14:27:15 +01:00
Serge Medvedev
8214a500d9 Assertion in dtor of context_t doesn't fail if close method has already been called 2016-09-19 10:27:52 +03:00
Elliot Saba
93af23a58e Enable passing flags in to send() and recv() 2016-08-14 16:46:43 -07:00
Constantin Rack
92d2af6def Merge pull request #81 from yorickdewid/patch-1
Remove explicit cast on void pointer operator
2016-07-18 21:03:11 +02:00
Yorick de Wid
bd288a55c1 Remove explicit cast on void pointer operator 2016-07-18 16:51:24 +02:00
Constantin Rack
0db7521a64 Merge pull request #75 from K0n63n/master
Class for multipart messaging
2016-04-06 20:41:32 +02:00
Harald Nøkland
e7c2093581 Class for multipart messaging
This class handles multipart messaging. It is the C++ equivalent of zmsg.h, which is part of CZMQ (the high-level C binding). Furthermore, it is a major improvement compared to zmsg.hpp, which is part of the examples in the ØMQ Guide. Unnecessary copying is avoided by using move semantics to efficiently add/remove parts.
2016-04-06 14:20:10 +02:00
Constantin Rack
68a7b09cfc Merge pull request #70 from raulcf/master
Updating zmq_ctx_shutdown to zmq_ctx_destroy which is imported in zmq.h
2016-01-20 00:11:25 +01:00
raulcf
014628cb34 Updating zmq_ctx_shutdown to zmq_ctx_ctx which is imported in zmq.h 2016-01-19 17:39:26 -05:00
Pieter Hintjens
7f7c83411d Merge pull request #67 from K0n63n/master
New fill constructor for message_t
2015-12-03 09:15:21 +01:00
Harald Nøkland
fdd9d2d5f0 New fill constructor for message_t
New fill constructor: message_t(const void *data, size_t size). Constructs a new message of the given size and copies the data to the message body. In addition a new rebuild() function that does the same for an already constructed object
2015-12-03 08:43:24 +01:00
Constantin Rack
c86eb9ed4d Merge pull request #66 from K0n63n/master 2015-12-03 08:38:41 +01:00
Harald Nøkland
18b5870caa Fix warning 4996 in msvc debug build
When making a debug build with msvc, the range constructor of message_t caused warning 4996: 'std::_Copy_impl': Function call with parameters that may be unsafe. It is actually safe to do what's done in the constructor, so the workaround is to mimic what std::copy does, whitout the range check.
2015-12-03 08:23:39 +01:00
Pieter Hintjens
ac1c3c3bd8 Merge pull request #65 from K0n63n/master
Correction to pull request #56
2015-11-30 17:15:25 +01:00
Harald Nøkland
308239d758 Correction to pull request #56
A better/nicer solution to fix the type mismatch warnings (size_t to int). Working with size_t as long as possible and doing the static_cast right before calling the zmq_poll() function of libzmq
2015-11-30 16:55:51 +01:00
Pieter Hintjens
df5ce1782c Merge pull request #64 from K0n63n/master
Fix two issues in message_t's range constructor
2015-11-30 15:52:06 +01:00
Harald Nøkland
4815c80aed Fix two issues in message_t's range constructor
Fix the following two problems in message_t's range constructor: (1) The range constructor passed the wrong size for iterator-types larger than one byte, (2) The range constructor didn't compile for const-iterators.
2015-11-30 15:36:42 +01:00
Constantin Rack
2e22e3fc45 Merge pull request #62 from gdfast/patch-2
Make getsockopt() functions const
2015-11-19 20:05:58 +01:00
gdfast
c1e8ac0f19 Make getsockopt() functions const
Make the socket_t::getsockopt() functions (which wrap zmq_getsockopt() ) const because they should only access and not modify socket state.
2015-11-19 12:37:07 -05:00
Constantin Rack
bad35bdbfe Merge pull request #59 from dquam/patch-1
Fix usage of zmq_msg_recv and zmq_recvmsg
2015-11-14 09:27:49 +01:00
dquam
baeaebc1cf Fix usage of zmq_msg_recv and zmq_recvmsg
The zmq_msg_recv() function takes the message, socket, and flags while the zmq_recvmsg() function takes the socket, message. This commit addresses that difference.
2015-11-12 15:35:16 -06:00
Constantin Rack
7c3d374ff8 Merge pull request #57 from gdfast/patch-1
Avoid using deprecated function zmq_recvmsg
2015-11-10 21:20:22 +01:00
Constantin Rack
fadb37e4a7 Merge pull request #52 from revaultch/master
Fixes assertion error: src/mutex.hpp:123
2015-11-10 21:20:11 +01:00
gdfast
5989203558 Avoid using deprecated function zmq_recvmsg
The zmq_recvmsg() function has been replaced by zmq_msg_recv() since version 3.2.0, and has since been marked as deprecated.
See: https://raw.githubusercontent.com/zeromq/zeromq3-x/master/NEWS
Replace our uses of the old function (which was in monitor_t::monitor()) with the more modern function call. Support backwards compatibility with a #DEFINE macro for versions of zmq preceeding 3.2.0
2015-11-10 15:14:21 -05:00
Pieter Hintjens
4d79066be3 Merge pull request #56 from cmcmurrough/master
fixed type mismatch warnings (size_t to int)
2015-11-06 02:05:22 +01:00
Christopher D. McMurrough
0feecde95c fixed type mismatch warnings (size_t to int)
MSVC complains about conversion of size_t to int.  The size_t typedef is
defined as an unsigned __int64 on Win64, which triggers the warning. Two
such instances were fixed with static_cast<int>(size_t)
2015-11-05 17:21:24 -06:00
Pieter Hintjens
a4459abdd1 Merge pull request #55 from banburybill/master
Extend C++11 guard to cover remaining use of std::vector data().
2015-11-01 17:34:17 +01:00
Jim Hague
87b12c806a Extend C++11 guard to cover remaining use of std::vector data().
Now compiles without error with a pre-C++11 compiler (g++-3.3).

Fixes #53
Please enter the commit message for your changes. Lines starting
2015-11-01 16:08:56 +00:00
Urs Keller
971092e472 Fixes assertion error, when destroing ctx while creating a socket from a different thread: ./src/mutex.hpp:123 2015-10-02 16:32:36 +02:00
Pieter Hintjens
fa2f2c67a7 Merge pull request #51 from ligouras/master
Fix backward compatibility
2015-09-26 20:42:39 +02:00
Spyros Ligouras
05a0256d0e Fix backward compatibility 2015-09-26 13:20:37 +03:00
Richard Newton
a88bf3e0b0 Merge pull request #49 from jens-auer/master
Enhanced const-correctness and made interface more C++-ish
2015-07-06 08:33:38 +01:00
jens
34c8e4395c Fixed some const-correctness issues
C++11-ified some stuff:
overloads with C++11 types, nothrow

Added some template methods to work with messages and sockets
2015-07-05 13:29:03 +02:00
Andrey Sibiryov
ac705f6047 Merge pull request #43 from tolchz/master
Add an rvalue overload for socket_t::send
2015-03-05 20:44:11 -05:00
Todd Neal
67b216681d Add an rvalue overload for socket_t::send
This lets you create functions that return message_t's by value, and
pass them to send() with no copy.
2015-03-05 16:06:36 -06:00
Andrey Sibiryov
403f5d6e32 Merge pull request #42 from tolchz/master
Fix a misaligned load
2015-03-05 09:31:39 -05:00
Todd Neal
f141cf5bfc Fix a misaligned load
The issue was discovered by clang:

zmq.hpp:504:34: runtime error: load of misaligned address 0x2b38beb224b2
for type 'int32_t' (aka 'int'), which requires 4 byte alignment

I modified the loads of both event and value to be consistent.
2015-03-05 08:19:13 -06:00
Richard Newton
1f05e0d111 Merge pull request #41 from hintjens/master
Problem: zmq_event_t removed in libzmq v4.1
2014-09-11 16:51:03 +01:00
Pieter Hintjens
7f6cc85df8 Problem: zmq_event_t removed in libzmq v4.1
Solution: define this if we need it, so that caller can use it
on all versions of libzmq.

Fixes #40
2014-09-11 08:32:58 +02:00
Pieter Hintjens
96e05769d2 Merge pull request #39 from zbierak/master
Fixes backward compatibility with zmq 3.x
2014-08-08 11:58:43 +02:00
zbierak
a819813095 Fixes backward compatibility with zmq 3.x
The code added in 'Fixed misaligned structure cast' implicitly assumes zmq 4.x, since it relies on new fields in zmq_event_t structure. This commit re-introduces the previous code if zmq < 4.x is detected.
2014-08-08 08:18:16 +00:00
Pieter Hintjens
ce806eec82 Merge pull request #38 from justinboswell/master
Fixed misaligned structure cast
2014-08-06 21:06:29 +02:00
Justin Boswell
0c0f3ae451 Fixed misaligned structure cast
zmq_event_t is often padded (due to a uint16_t as its first member), and thus you cannot re-interpret bytewise packed message buffers as zmq_event_t, it must be read manually. This was resulting in the value always being garbage, which is troublesome if you wish to inspect a SOCKET, for example.
2014-08-06 14:49:59 -04:00
Pieter Hintjens
ee47ae4cdd Merge pull request #36 from cosmoharrigan/patch-1
Fix for #34
2014-03-21 07:40:49 +02:00
Cosmo Harrigan
04d2897605 Fix for #34
As of right now, the steerable proxy functionality requires version 4.1.0.
2014-03-20 22:35:50 -07:00
Pieter Hintjens
35d6bb5128 Merge pull request #33 from cosmoharrigan/proxy
Add proxy_steerable interface for zmq_proxy_steerable in versions >= 4.0.4
2014-03-18 07:10:29 +01:00
Cosmo Harrigan
9683327efc Add proxy_steerable interface for zmq_proxy_steerable in versions >= 4.0.4 2014-03-17 18:20:51 -07:00
Pieter Hintjens
77b55a27b0 Merge pull request #32 from madevgeny/master
Fixed assert on Win8.1. Thanks to jonwfreeman.
2014-03-14 10:13:21 +01:00