Gudmundur Adalsteinsson
a3e5b54c3c
Problem: Socket options lack type-safety ( #393 )
...
Solution: Implement a type for each socket option.
Each option has an associated type, therefore they
can't be simply defined as an enum class.
Use new sockopt getter in test util
Add socket option get function for strings and tests
2020-03-24 09:33:50 +01:00
Brett Viren
10431084bb
Problem: lack conversion message_t
and multipart_t
( #391 )
...
Solution: add encode/decode methods to multipart_t giving a codec compatible with the CZMQ equivalent.
2020-03-20 10:59:15 +01:00
Gudmundur Adalsteinsson
5999e5adc7
Problem: Macros not defined in older versions ( #386 )
...
* Problem: Macros not defined in older versions
Solution: Guard usage of libzmq macros
* Test older version of libzmq with C++11 or later
* Use a slightly newer libzmq version
2020-02-21 11:29:12 +01:00
Gudmundur Adalsteinsson
324b11f239
Problem: Context lacks typesafe options
...
Solution: Define an enum class for the context options
Co-Authored-By: Simon Giesecke <simon.giesecke@gmail.com>
Co-authored-by: Simon Giesecke <simon.giesecke@gmail.com>
2020-02-07 15:39:58 +01:00
Simon Giesecke
b6c79eb0c8
Reformat all files with clang-format
2020-01-28 11:11:31 +01:00
Gudmundur Adalsteinsson
47969cfdcf
Problem: shutdown() missing for context_t ( #377 )
...
Solution: Add shutdown(). This function is required
for clean termination of the zmq context in multi-threaded
applications where sockets are used in threads. In particular
if blocking operation are used and if sockets can be created
at any time.
* Improve tests and documentation
2020-01-27 08:31:46 +01:00
Gudmundur Adalsteinsson
4f9c2ea519
Problem: message_t to string is hard
...
Solution: add to_string() function.
2020-01-07 19:54:47 +00:00
Gudmundur Adalsteinsson
93e3090eb3
Problem: Missing recv multipart to fixed buffers
...
Solution: Add recv_multipart_n function
2019-12-05 20:02:38 +00:00
Gudmundur Adalsteinsson
76e5fb04a9
Problem: No multipart tests are begin run
...
Solution: Move ifdef
2019-11-09 12:40:02 +00:00
Gudmundur Adalsteinsson
41dee3e7a3
Remove comment, fix includes
2019-10-27 10:28:45 +00:00
Gudmundur Adalsteinsson
505edeb336
Problem: Handling multipart messages is complex
...
Solution: Add generic algorithms for sending and receiving multipart
messages.
2019-10-26 19:59:46 +00:00
Gudmundur Adalsteinsson
4b443fc59b
Clarify example requirements
2019-09-14 20:10:47 +00:00
Simon Giesecke
b2fa1192bd
Merge pull request #343 from gummif/gfa/str-buffer
...
Problem: Sending string literals is awkward
2019-09-13 09:40:08 +02:00
Gudmundur Adalsteinsson
7d9e5cb421
Add user-defined string literals to create buffers
2019-09-11 20:38:47 +00:00
Gudmundur Adalsteinsson
ab588fb7c9
Assertion and constexpr improvements for str_buffer
2019-09-11 20:21:02 +00:00
Gudmundur Adalsteinsson
57d3681ee4
Problem: Strict aliasing warning in tests
...
Solution: Use memcpy instead of reinterpret_cast
2019-09-10 20:13:45 +00:00
Gudmundur Adalsteinsson
13cc1e0fe9
Problem: Sending string literals is awkward
...
Solution: A function str_buffer specifically for
creating buffers for null terminated string literals.
2019-09-03 14:06:19 +00:00
Gudmundur Adalsteinsson
4f1ff4952d
Fix for lacking SFINAE support on older GCC
2019-08-30 23:14:16 +00:00
Gudmundur Adalsteinsson
9e0b9b4a38
Fix tests
2019-08-30 22:33:49 +00:00
Simon Giesecke
86876d7307
Merge pull request #328 from xiphon/fix-recv-flags-default
...
Fix 'recv' function 'flags_' argument default value
2019-07-24 14:42:31 +02:00
xiphon
19b5222e4e
Fix 'recv' function 'flags_' argument default value
2019-06-02 02:01:42 +00:00
Simon Giesecke
4e37816dfa
Merge pull request #325 from gummif/gfa/msg-range-ctor
...
Problem: message_t ctor for ranges too greedy
2019-06-01 16:23:46 +02:00
Gudmundur Adalsteinsson
f412ea9e34
Improved range detection supporting ADL
2019-05-31 12:09:20 +00:00
Gudmundur Adalsteinsson
09ab20801a
Problem: message_t ctor for ranges too greedy
...
Solution: Detect ranges with enable_if idiom
2019-05-15 16:49:22 +00:00
Gudmundur Adalsteinsson
0ce8ef06d5
Clean up and test event flags implementation
2019-05-15 11:32:23 +00:00
Gudmundur Adalsteinsson
0458f7d16c
Problem: Type-safety of poller_t and active_poller_t can be improved ( #318 )
...
Problem: Type-safety of poller_t and active_poller_t can be improved
2019-05-15 08:35:12 +02:00
Gudmundur Adalsteinsson
88cee88d08
Change recv and send to return optional types
2019-05-10 14:22:04 +00:00
Gudmundur Adalsteinsson
809acb2dc8
Make buffer constructors and functions constexpr
2019-05-09 22:47:57 +00:00
Gudmundur Adalsteinsson
99d98dd217
Improved enum flags operators and tests
2019-05-09 22:33:49 +00:00
Simon Giesecke
9a60ad3fc8
Apply suggestions from code review
...
Co-Authored-By: gummif <ofpgummi@yahoo.com>
2019-05-08 21:37:14 +00:00
Gudmundur Adalsteinsson
3d4be814e8
Problem: send/recv functions lack type-safety
...
Solution: Add functions taking buffers and enum class flags
2019-05-05 22:05:47 +00:00
Gudmundur Adalsteinsson
c6a3529cd1
Problem: No type-safe alternatives when polling or needing a reference to a socket
...
Solution: Introduce a socket_ref that is a non-owning nullable reference to a socket
2019-04-19 22:10:26 +00:00
Simon Giesecke
b0ac8acd60
Merge pull request #315 from gummif/gfa/test-warnings
...
Problem: Compiler warnings in tests
2019-04-15 11:54:05 +02:00
Simon Giesecke
961bb4fb46
Merge pull request #313 from gummif/gfa/socket-ctor
...
Problem: socket_t can not be default constructed
2019-04-15 10:58:45 +02:00
Gudmundur Adalsteinsson
c2e595bc69
Problem: Compiler warning in tests
...
Solution: Fix some compiler warnings
2019-04-14 21:34:15 +00:00
Gudmundur Adalsteinsson
4ceabb37b6
Problem: socket_t can not be default constructed
...
Solution: Provide a default constructor
2019-04-14 12:21:30 +00:00
Gudmundur Adalsteinsson
16f16eeaad
Problem: message_t lacks empty() function
...
Solution: Add function and qualify with nodiscard like std types
2019-04-04 17:55:27 +00:00
Simon Giesecke
d1e7c538cc
Merge pull request #303 from gummif/gfa/swap
...
Problem: Missing swap functions
2019-04-04 14:51:10 +02:00
Simon Giesecke
5c69a36b95
Merge pull request #304 from gummif/gfa/monitor-move
...
Problem: monitor_t incorrectly deletes socket_t move assignment operator
2019-04-04 09:15:55 +02:00
Gudmundur Adalsteinsson
b6a07be512
Problem: monitor_t incorrectly deletes socket_t move assignment operator
...
Solution: Implement a move assignment operator for monitor_t
2019-04-03 14:04:58 +00:00
Gudmundur Adalsteinsson
72f0e1bcba
Problem: message_t move and copy are mutating but take const
...
Solution: Deprecate old functions and add overloads taking non-const
references
2019-04-03 13:56:11 +00:00
Gudmundur Adalsteinsson
83b91c8b7e
Problem: Missing swap functions
...
Solution: Implement for socket_t, context_t, message_t and poller_t
Additionally remove dependency on <functional> by refactoring poller_t
and remove unused <unordered_map> include.
2019-04-03 13:23:17 +00:00
Gudmundur Adalsteinsson
1eedfaf9a5
Problem: proxy is not typesafe
...
Solution: Add overloads to proxy and proxy_steerable taking socket_t
objects
2019-03-31 22:30:10 +00:00
trya
a91522f65e
Unit tests for message_t::get()
...
Testing ZMQ_SHARED property only, since other properties (ZMQ_MORE and
ZMQ_SRCFD) depend on socket operations.
2019-03-14 14:25:50 +01:00
Simon Giesecke
4043617afe
Problem: test cases for error behaviour of (active_)poller_t failing with libzmq 4.3.x
...
Solution: adapt test cases to changed behaviour
2019-02-04 15:25:35 +01:00
Pawel Kurdybacha
6982fb7017
Problem #268 : CTest output without tests details
...
Solution: Added integration with CTest to existing unit test framework
based on Catch. ctest -v returns list of run tests now.
Changes:
* downloading and using Catch cmake modules that `unit_tests
--list-test-names-only` for add_test internally
2019-01-23 08:48:11 +00:00
Pawel Kurdybacha
6a6aebb845
Problem #284 : test pthread link error with with gcc
...
Solution: Use Threads cmake module as suggested in this thread:
https://cmake.org/pipermail/cmake/2016-February/062729.html
I was able to reproduce with gcc 8.2.1 and cmake 3.13.2.
2019-01-22 20:55:06 +00:00
Pawel Kurdybacha
ae15964907
Problem: Dependency on googletest framework
...
Currently cppzmq as relatively simple and header only library depends on rather
complex unit test framework googletest.
Current issues:
- Googletest requires downloading and building it every time on travis
as cache support is limited there
- Googletest build is signifficant with comparison to cppzmq unittests
total runtime
Solution: Port existing tests to Catch - header only C++ framework and
gain ~20% build speed up on travis.
Why Catch?
It is well know C++ header only testing framework. It works well, it is
being kept up to date and maintainers seem to pay attention to
community's comments and issues.
We can not use Catch2 currently as we still support pre-C++11 compilers.
2018-10-17 15:22:07 +01:00
tangfu
5af24314c3
add front and back ( #269 )
...
* add front and back
i'll get the last message in some situations,but have to do like this :
```
multimsg msgs;
auto msg = msgs[msgs.size() - 1];
func(msg.size());
auto *msg = msgs.end() - 1;
```
but, std::queue have some method 'front' and 'back'. so maybe i can simply do this ? :
```
multimsg msgs;
auto msg = msgs.back();
```
* add test for front and back
2018-10-17 08:41:21 +01:00
Simon Giesecke
120c7ae3f2
Problem: no test case for previously existing send functionality
...
Solution: added test case
2018-08-21 13:50:02 +02:00