Go to the documentation of this file.
26 #ifndef __ZMQ_HPP_INCLUDED__
27 #define __ZMQ_HPP_INCLUDED__
38 #if defined(_MSVC_LANG)
39 #define CPPZMQ_LANG _MSVC_LANG
41 #define CPPZMQ_LANG __cplusplus
44 #if defined(_HAS_CXX14) && _HAS_CXX14 && CPPZMQ_LANG < 201402L
46 #define CPPZMQ_LANG 201402L
48 #if defined(_HAS_CXX17) && _HAS_CXX17 && CPPZMQ_LANG < 201703L
50 #define CPPZMQ_LANG 201703L
54 #if CPPZMQ_LANG >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1900)
57 #if CPPZMQ_LANG >= 201402L
60 #if CPPZMQ_LANG >= 201703L
64 #if defined(ZMQ_CPP14) && !defined(_MSC_VER)
65 #define ZMQ_DEPRECATED(msg) [[deprecated(msg)]]
66 #elif defined(_MSC_VER)
67 #define ZMQ_DEPRECATED(msg) __declspec(deprecated(msg))
68 #elif defined(__GNUC__)
69 #define ZMQ_DEPRECATED(msg) __attribute__((deprecated(msg)))
71 #define ZMQ_DEPRECATED(msg)
74 #if defined(ZMQ_CPP17)
75 #define ZMQ_NODISCARD [[nodiscard]]
80 #if defined(ZMQ_CPP11)
81 #define ZMQ_NOTHROW noexcept
82 #define ZMQ_EXPLICIT explicit
83 #define ZMQ_OVERRIDE override
84 #define ZMQ_NULLPTR nullptr
85 #define ZMQ_CONSTEXPR_FN constexpr
86 #define ZMQ_CONSTEXPR_VAR constexpr
87 #define ZMQ_CPP11_DEPRECATED(msg) ZMQ_DEPRECATED(msg)
89 #define ZMQ_NOTHROW throw()
93 #define ZMQ_CONSTEXPR_FN
94 #define ZMQ_CONSTEXPR_VAR const
95 #define ZMQ_CPP11_DEPRECATED(msg)
97 #if defined(ZMQ_CPP14) && (!defined(_MSC_VER) || _MSC_VER > 1900) && (!defined(__GNUC__) || __GNUC__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ > 3))
98 #define ZMQ_EXTENDED_CONSTEXPR
100 #if defined(ZMQ_CPP17)
101 #define ZMQ_INLINE_VAR inline
102 #define ZMQ_CONSTEXPR_IF constexpr
104 #define ZMQ_INLINE_VAR
105 #define ZMQ_CONSTEXPR_IF
111 #include <type_traits>
125 #if defined(__has_include) && defined(ZMQ_CPP17)
126 #define CPPZMQ_HAS_INCLUDE_CPP17(X) __has_include(X)
128 #define CPPZMQ_HAS_INCLUDE_CPP17(X) 0
131 #if CPPZMQ_HAS_INCLUDE_CPP17(<optional>) && !defined(CPPZMQ_HAS_OPTIONAL)
132 #define CPPZMQ_HAS_OPTIONAL 1
134 #ifndef CPPZMQ_HAS_OPTIONAL
135 #define CPPZMQ_HAS_OPTIONAL 0
136 #elif CPPZMQ_HAS_OPTIONAL
140 #if CPPZMQ_HAS_INCLUDE_CPP17(<string_view>) && !defined(CPPZMQ_HAS_STRING_VIEW)
141 #define CPPZMQ_HAS_STRING_VIEW 1
143 #ifndef CPPZMQ_HAS_STRING_VIEW
144 #define CPPZMQ_HAS_STRING_VIEW 0
145 #elif CPPZMQ_HAS_STRING_VIEW
146 #include <string_view>
150 #define CPPZMQ_VERSION_MAJOR 4
151 #define CPPZMQ_VERSION_MINOR 10
152 #define CPPZMQ_VERSION_PATCH 0
154 #define CPPZMQ_VERSION \
155 ZMQ_MAKE_VERSION(CPPZMQ_VERSION_MAJOR, CPPZMQ_VERSION_MINOR, \
156 CPPZMQ_VERSION_PATCH)
159 #if (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)) \
160 && defined(__GXX_EXPERIMENTAL_CXX0X__))
161 #define ZMQ_HAS_RVALUE_REFS
162 #define ZMQ_DELETED_FUNCTION = delete
163 #elif defined(__clang__)
164 #if __has_feature(cxx_rvalue_references)
165 #define ZMQ_HAS_RVALUE_REFS
168 #if __has_feature(cxx_deleted_functions)
169 #define ZMQ_DELETED_FUNCTION = delete
171 #define ZMQ_DELETED_FUNCTION
173 #elif defined(_MSC_VER) && (_MSC_VER >= 1900)
174 #define ZMQ_HAS_RVALUE_REFS
175 #define ZMQ_DELETED_FUNCTION = delete
176 #elif defined(_MSC_VER) && (_MSC_VER >= 1600)
177 #define ZMQ_HAS_RVALUE_REFS
178 #define ZMQ_DELETED_FUNCTION
180 #define ZMQ_DELETED_FUNCTION
183 #if defined(ZMQ_CPP11) && !defined(__llvm__) && !defined(__INTEL_COMPILER) \
184 && defined(__GNUC__) && __GNUC__ < 5
185 #define ZMQ_CPP11_PARTIAL
186 #elif defined(__GLIBCXX__) && __GLIBCXX__ < 20160805
189 #define ZMQ_CPP11_PARTIAL
193 #ifdef ZMQ_CPP11_PARTIAL
194 #define ZMQ_IS_TRIVIALLY_COPYABLE(T) __has_trivial_copy(T)
196 #include <type_traits>
197 #define ZMQ_IS_TRIVIALLY_COPYABLE(T) std::is_trivially_copyable<T>::value
201 #if ZMQ_VERSION >= ZMQ_MAKE_VERSION(3, 3, 0)
202 #define ZMQ_NEW_MONITOR_EVENT_LAYOUT
205 #if ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 1, 0)
206 #define ZMQ_HAS_PROXY_STEERABLE
216 #if ZMQ_VERSION < ZMQ_MAKE_VERSION(3, 2, 0)
217 #define zmq_msg_recv(msg, socket, flags) zmq_recvmsg(socket, msg, flags)
224 #define ZMQ_ASSERT(expression) assert(expression)
226 #define ZMQ_ASSERT(expression) (void) (expression)
238 template<
class T>
auto begin(
T &&
r) -> decltype(
begin(std::forward<T>(
r)))
240 return begin(std::forward<T>(
r));
242 template<
class T>
auto end(
T &&
r) -> decltype(
end(std::forward<T>(
r)))
244 return end(std::forward<T>(
r));
248 template<
class T>
using void_t =
void;
253 template<
class Range>
254 using range_iter_t = decltype(
257 template<
class Range>
using range_value_t = iter_value_t<range_iter_t<Range>>;
267 ranges::
begin(std::declval<typename std::remove_reference<T>::type &>())
268 ==
ranges::end(std::declval<typename std::remove_reference<T>::type &>()))>>
282 typedef unsigned __int64
fd_t;
284 typedef unsigned int fd_t;
308 int rc =
zmq_poll(items_,
static_cast<int>(nitems_), timeout_);
316 ZMQ_DEPRECATED(
"from 4.8.0, use poll taking std::chrono::duration instead of long")
337 static_cast<long>(
timeout.count()));
345 static_cast<long>(
timeout.count()));
360 inline int poll(std::vector<zmq_pollitem_t> &items,
361 std::chrono::milliseconds
timeout = std::chrono::milliseconds{-1})
366 ZMQ_DEPRECATED(
"from 4.3.1, use poll taking std::chrono::duration instead of long")
369 return detail::poll(items.data(), items.size(), timeout_);
372 template<std::
size_t SIZE>
373 inline int poll(std::array<zmq_pollitem_t, SIZE> &items,
374 std::chrono::milliseconds
timeout = std::chrono::milliseconds{-1})
381 inline void version(
int *major_,
int *minor_,
int *patch_)
387 inline std::tuple<int, int, int>
version()
389 std::tuple<int, int, int>
v;
394 #if !defined(ZMQ_CPP11_PARTIAL)
397 template<
class T>
struct is_char_type
400 static constexpr
bool value =
429 assert(std::distance(
first, last) >= 0);
431 static_cast<size_t>(std::distance(
first, last)) *
sizeof(value_t);
458 #if defined(ZMQ_CPP11) && !defined(ZMQ_CPP11_PARTIAL)
467 ZMQ_DEPRECATED(
"from 4.7.0, use constructors taking iterators, (pointer, size) "
468 "or strings instead")
474 template<
class Range,
475 typename =
typename std::enable_if<
477 && ZMQ_IS_TRIVIALLY_COPYABLE(detail::range_value_t<Range>)
478 && !detail::is_char_type<detail::range_value_t<Range>>
::value
487 #if CPPZMQ_HAS_STRING_VIEW
493 #ifdef ZMQ_HAS_RVALUE_REFS
558 ZMQ_DEPRECATED(
"from 4.3.1, use move taking non-const reference instead")
573 ZMQ_DEPRECATED(
"from 4.3.1, use copy taking non-const reference instead")
612 return static_cast<T const *
>(
data());
620 const size_t my_size =
size();
621 return my_size == other.size() && 0 == memcmp(
data(), other.data(), my_size);
626 return !(*
this == other);
629 #if ZMQ_VERSION >= ZMQ_MAKE_VERSION(3, 2, 0)
639 #if ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 1, 0)
640 const char *
gets(
const char *property_)
649 #if defined(ZMQ_BUILD_DRAFT_API) && ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 0)
650 uint32_t routing_id()
const
655 void set_routing_id(uint32_t routing_id)
662 const char *
group()
const
667 void set_group(
const char *
group)
680 #if CPPZMQ_HAS_STRING_VIEW
682 std::string_view to_string_view()
const noexcept
684 return std::string_view(
static_cast<const char *
>(
data()),
size());
697 std::stringstream os;
702 int is_ascii[2] = {0, 0};
704 os <<
"zmq::message_t [size " << std::dec << std::setw(3)
705 << std::setfill(
'0') <<
size <<
"] (";
708 os <<
"... too big to print)";
713 is_ascii[1] = (
byte >= 32 &&
byte < 127);
714 if (is_ascii[1] != is_ascii[0])
720 os << std::hex << std::uppercase << std::setw(2)
721 << std::setfill(
'0') <<
static_cast<short>(
byte);
723 is_ascii[0] = is_ascii[1];
760 #ifdef ZMQ_IO_THREADS
763 #ifdef ZMQ_THREAD_SCHED_POLICY
766 #ifdef ZMQ_THREAD_PRIORITY
769 #ifdef ZMQ_THREAD_AFFINITY_CPU_ADD
772 #ifdef ZMQ_THREAD_AFFINITY_CPU_REMOVE
775 #ifdef ZMQ_THREAD_NAME_PREFIX
781 #ifdef ZMQ_ZERO_COPY_RECV
784 #ifdef ZMQ_MAX_SOCKETS
787 #ifdef ZMQ_SOCKET_LIMIT
793 #ifdef ZMQ_MSG_T_SIZE
823 #ifdef ZMQ_HAS_RVALUE_REFS
847 void set(ctxopt option,
int optval)
920 struct recv_buffer_size
923 size_t untruncated_size;
927 return size != untruncated_size;
931 #if CPPZMQ_HAS_OPTIONAL
933 using send_result_t = std::optional<size_t>;
934 using recv_result_t = std::optional<size_t>;
935 using recv_buffer_result_t = std::optional<recv_buffer_size>;
943 template<
class T>
class trivial_optional
949 trivial_optional() =
default;
950 trivial_optional(
T value) noexcept : _value(
value), _has_value(
true) {}
952 const T *operator->()
const noexcept
957 T *operator->() noexcept
977 throw std::exception();
983 throw std::exception();
987 explicit operator bool()
const noexcept {
return _has_value; }
988 bool has_value()
const noexcept {
return _has_value; }
992 bool _has_value{
false};
996 using send_result_t = detail::trivial_optional<size_t>;
997 using recv_result_t = detail::trivial_optional<size_t>;
998 using recv_buffer_result_t = detail::trivial_optional<recv_buffer_size>;
1004 template<
class T> constexpr
T enum_bit_or(
T a,
T b) noexcept
1008 return static_cast<T>(
static_cast<U
>(
a) |
static_cast<U
>(
b));
1010 template<
class T> constexpr
T enum_bit_and(
T a,
T b) noexcept
1014 return static_cast<T>(
static_cast<U
>(
a) &
static_cast<U
>(
b));
1016 template<
class T> constexpr
T enum_bit_xor(
T a,
T b) noexcept
1020 return static_cast<T>(
static_cast<U
>(
a) ^
static_cast<U
>(
b));
1022 template<
class T> constexpr
T enum_bit_not(
T a) noexcept
1026 return static_cast<T>(~static_cast<U>(
a));
1031 enum class send_flags : int
1038 constexpr send_flags operator|(send_flags
a, send_flags
b) noexcept
1040 return detail::enum_bit_or(
a,
b);
1042 constexpr send_flags operator&(send_flags
a, send_flags
b) noexcept
1044 return detail::enum_bit_and(
a,
b);
1046 constexpr send_flags operator^(send_flags
a, send_flags
b) noexcept
1048 return detail::enum_bit_xor(
a,
b);
1050 constexpr send_flags
operator~(send_flags
a) noexcept
1052 return detail::enum_bit_not(
a);
1056 enum class recv_flags : int
1062 constexpr recv_flags operator|(recv_flags
a, recv_flags
b) noexcept
1064 return detail::enum_bit_or(
a,
b);
1066 constexpr recv_flags operator&(recv_flags
a, recv_flags
b) noexcept
1068 return detail::enum_bit_and(
a,
b);
1070 constexpr recv_flags operator^(recv_flags
a, recv_flags
b) noexcept
1072 return detail::enum_bit_xor(
a,
b);
1074 constexpr recv_flags
operator~(recv_flags
a) noexcept
1076 return detail::enum_bit_not(
a);
1084 class mutable_buffer
1087 constexpr mutable_buffer() noexcept : _data(
nullptr), _size(0) {}
1088 constexpr mutable_buffer(
void *
p,
size_t n) noexcept : _data(
p), _size(
n)
1090 #ifdef ZMQ_EXTENDED_CONSTEXPR
1091 assert(
p !=
nullptr ||
n == 0);
1095 constexpr
void *
data()
const noexcept {
return _data; }
1096 constexpr
size_t size()
const noexcept {
return _size; }
1100 const auto shift = (std::min)(
n, _size);
1101 _data =
static_cast<char *
>(_data) + shift;
1111 inline mutable_buffer
operator+(
const mutable_buffer &mb,
size_t n) noexcept
1113 return mutable_buffer(
static_cast<char *
>(mb.data()) + (std::min)(
n, mb.size()),
1114 mb.size() - (std::min)(
n, mb.size()));
1116 inline mutable_buffer
operator+(
size_t n,
const mutable_buffer &mb) noexcept
1124 constexpr const_buffer() noexcept : _data(
nullptr), _size(0) {}
1125 constexpr const_buffer(
const void *
p,
size_t n) noexcept : _data(
p), _size(
n)
1127 #ifdef ZMQ_EXTENDED_CONSTEXPR
1128 assert(
p !=
nullptr ||
n == 0);
1131 constexpr const_buffer(
const mutable_buffer &mb) noexcept :
1132 _data(mb.data()), _size(mb.size())
1136 constexpr
const void *
data()
const noexcept {
return _data; }
1137 constexpr
size_t size()
const noexcept {
return _size; }
1140 const auto shift = (std::min)(
n, _size);
1141 _data =
static_cast<const char *
>(_data) + shift;
1151 inline const_buffer
operator+(
const const_buffer &cb,
size_t n) noexcept
1153 return const_buffer(
static_cast<const char *
>(cb.data())
1154 + (std::min)(
n, cb.size()),
1155 cb.size() - (std::min)(
n, cb.size()));
1157 inline const_buffer
operator+(
size_t n,
const const_buffer &cb) noexcept
1164 constexpr mutable_buffer
buffer(
void *
p,
size_t n) noexcept
1166 return mutable_buffer(
p,
n);
1168 constexpr const_buffer
buffer(
const void *
p,
size_t n) noexcept
1170 return const_buffer(
p,
n);
1172 constexpr mutable_buffer
buffer(
const mutable_buffer &mb) noexcept
1176 inline mutable_buffer
buffer(
const mutable_buffer &mb,
size_t n) noexcept
1178 return mutable_buffer(mb.data(), (std::min)(mb.size(),
n));
1180 constexpr const_buffer
buffer(
const const_buffer &cb) noexcept
1184 inline const_buffer
buffer(
const const_buffer &cb,
size_t n) noexcept
1186 return const_buffer(cb.data(), (std::min)(cb.size(),
n));
1191 template<
class T>
struct is_buffer
1193 static constexpr
bool value =
1197 template<
class T>
struct is_pod_like
1203 static constexpr
bool value =
1207 template<
class C> constexpr
auto seq_size(
const C &c) noexcept -> decltype(c.size())
1211 template<
class T,
size_t N>
1212 constexpr
size_t seq_size(
const T (&)[N]) noexcept
1218 auto buffer_contiguous_sequence(Seq &&seq) noexcept
1221 using T =
typename std::remove_cv<
1225 const auto size = seq_size(seq);
1230 auto buffer_contiguous_sequence(Seq &&seq,
size_t n_bytes) noexcept
1231 -> decltype(buffer_contiguous_sequence(seq))
1233 using T =
typename std::remove_cv<
1237 const auto size = seq_size(seq);
1239 (std::min)(
size *
sizeof(
T), n_bytes));
1245 template<
class T,
size_t N> mutable_buffer
buffer(
T (&
data)[N]) noexcept
1247 return detail::buffer_contiguous_sequence(
data);
1249 template<
class T,
size_t N>
1250 mutable_buffer
buffer(
T (&
data)[N],
size_t n_bytes) noexcept
1252 return detail::buffer_contiguous_sequence(
data, n_bytes);
1254 template<
class T,
size_t N> const_buffer
buffer(
const T (&
data)[N]) noexcept
1256 return detail::buffer_contiguous_sequence(
data);
1258 template<
class T,
size_t N>
1259 const_buffer
buffer(
const T (&
data)[N],
size_t n_bytes) noexcept
1261 return detail::buffer_contiguous_sequence(
data, n_bytes);
1264 template<
class T,
size_t N> mutable_buffer
buffer(std::array<T, N> &
data) noexcept
1266 return detail::buffer_contiguous_sequence(
data);
1268 template<
class T,
size_t N>
1269 mutable_buffer
buffer(std::array<T, N> &
data,
size_t n_bytes) noexcept
1271 return detail::buffer_contiguous_sequence(
data, n_bytes);
1273 template<
class T,
size_t N>
1274 const_buffer
buffer(std::array<const T, N> &
data) noexcept
1276 return detail::buffer_contiguous_sequence(
data);
1278 template<
class T,
size_t N>
1279 const_buffer
buffer(std::array<const T, N> &
data,
size_t n_bytes) noexcept
1281 return detail::buffer_contiguous_sequence(
data, n_bytes);
1283 template<
class T,
size_t N>
1284 const_buffer
buffer(
const std::array<T, N> &
data) noexcept
1286 return detail::buffer_contiguous_sequence(
data);
1288 template<
class T,
size_t N>
1289 const_buffer
buffer(
const std::array<T, N> &
data,
size_t n_bytes) noexcept
1291 return detail::buffer_contiguous_sequence(
data, n_bytes);
1294 template<
class T,
class Allocator>
1295 mutable_buffer
buffer(std::vector<T, Allocator> &
data) noexcept
1297 return detail::buffer_contiguous_sequence(
data);
1299 template<
class T,
class Allocator>
1300 mutable_buffer
buffer(std::vector<T, Allocator> &
data,
size_t n_bytes) noexcept
1302 return detail::buffer_contiguous_sequence(
data, n_bytes);
1304 template<
class T,
class Allocator>
1305 const_buffer
buffer(
const std::vector<T, Allocator> &
data) noexcept
1307 return detail::buffer_contiguous_sequence(
data);
1309 template<
class T,
class Allocator>
1310 const_buffer
buffer(
const std::vector<T, Allocator> &
data,
size_t n_bytes) noexcept
1312 return detail::buffer_contiguous_sequence(
data, n_bytes);
1315 template<
class T,
class Traits,
class Allocator>
1316 mutable_buffer
buffer(std::basic_string<T, Traits, Allocator> &
data) noexcept
1318 return detail::buffer_contiguous_sequence(
data);
1320 template<
class T,
class Traits,
class Allocator>
1321 mutable_buffer
buffer(std::basic_string<T, Traits, Allocator> &
data,
1322 size_t n_bytes) noexcept
1324 return detail::buffer_contiguous_sequence(
data, n_bytes);
1326 template<
class T,
class Traits,
class Allocator>
1327 const_buffer
buffer(
const std::basic_string<T, Traits, Allocator> &
data) noexcept
1329 return detail::buffer_contiguous_sequence(
data);
1331 template<
class T,
class Traits,
class Allocator>
1332 const_buffer
buffer(
const std::basic_string<T, Traits, Allocator> &
data,
1333 size_t n_bytes) noexcept
1335 return detail::buffer_contiguous_sequence(
data, n_bytes);
1338 #if CPPZMQ_HAS_STRING_VIEW
1340 template<
class T,
class Traits>
1341 const_buffer
buffer(std::basic_string_view<T, Traits>
data) noexcept
1343 return detail::buffer_contiguous_sequence(
data);
1345 template<
class T,
class Traits>
1346 const_buffer
buffer(std::basic_string_view<T, Traits>
data,
size_t n_bytes) noexcept
1348 return detail::buffer_contiguous_sequence(
data, n_bytes);
1355 template<
class Char,
size_t N>
1356 constexpr const_buffer str_buffer(
const Char (&
data)[N]) noexcept
1359 #ifdef ZMQ_EXTENDED_CONSTEXPR
1362 return const_buffer(
static_cast<const Char *
>(
data), (N - 1) *
sizeof(
Char));
1367 constexpr const_buffer
operator"" _zbuf(
const char *
str,
size_t len) noexcept
1369 return const_buffer(
str,
len *
sizeof(
char));
1371 constexpr const_buffer
operator"" _zbuf(
const wchar_t *
str,
size_t len) noexcept
1373 return const_buffer(
str,
len *
sizeof(
wchar_t));
1375 constexpr const_buffer
operator"" _zbuf(
const char16_t *
str,
size_t len) noexcept
1377 return const_buffer(
str,
len *
sizeof(char16_t));
1379 constexpr const_buffer
operator"" _zbuf(
const char32_t *
str,
size_t len) noexcept
1381 return const_buffer(
str,
len *
sizeof(char32_t));
1398 #if defined(ZMQ_BUILD_DRAFT_API) && ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 0)
1407 #if defined(ZMQ_BUILD_DRAFT_API) && ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 3, 3)
1411 #if ZMQ_VERSION_MAJOR >= 4
1425 template<
int Opt,
class T,
bool BoolUnit = false>
struct integral_option
1433 template<
int Opt,
int NullTerm = 1>
struct array_option
1437 #define ZMQ_DEFINE_INTEGRAL_OPT(OPT, NAME, TYPE) \
1438 using NAME##_t = integral_option<OPT, TYPE, false>; \
1439 ZMQ_INLINE_VAR ZMQ_CONSTEXPR_VAR NAME##_t NAME {}
1440 #define ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(OPT, NAME, TYPE) \
1441 using NAME##_t = integral_option<OPT, TYPE, true>; \
1442 ZMQ_INLINE_VAR ZMQ_CONSTEXPR_VAR NAME##_t NAME {}
1443 #define ZMQ_DEFINE_ARRAY_OPT(OPT, NAME) \
1444 using NAME##_t = array_option<OPT>; \
1445 ZMQ_INLINE_VAR ZMQ_CONSTEXPR_VAR NAME##_t NAME {}
1446 #define ZMQ_DEFINE_ARRAY_OPT_BINARY(OPT, NAME) \
1447 using NAME##_t = array_option<OPT, 0>; \
1448 ZMQ_INLINE_VAR ZMQ_CONSTEXPR_VAR NAME##_t NAME {}
1449 #define ZMQ_DEFINE_ARRAY_OPT_BIN_OR_Z85(OPT, NAME) \
1450 using NAME##_t = array_option<OPT, 2>; \
1451 ZMQ_INLINE_VAR ZMQ_CONSTEXPR_VAR NAME##_t NAME {}
1457 ZMQ_DEFINE_INTEGRAL_OPT(
ZMQ_AFFINITY, affinity, uint64_t);
1460 ZMQ_DEFINE_INTEGRAL_OPT(
ZMQ_BACKLOG, backlog,
int);
1462 #ifdef ZMQ_BINDTODEVICE
1465 #ifdef ZMQ_BUSY_POLL
1466 ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(
ZMQ_BUSY_POLL, busy_poll,
int);
1469 ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(
ZMQ_CONFLATE, conflate,
int);
1471 #ifdef ZMQ_CONNECT_ROUTING_ID
1474 #ifdef ZMQ_CONNECT_TIMEOUT
1477 #ifdef ZMQ_CURVE_PUBLICKEY
1480 #ifdef ZMQ_CURVE_SECRETKEY
1483 #ifdef ZMQ_CURVE_SERVER
1486 #ifdef ZMQ_CURVE_SERVERKEY
1489 #ifdef ZMQ_DISCONNECT_MSG
1493 ZMQ_DEFINE_INTEGRAL_OPT(
ZMQ_EVENTS, events,
int);
1498 #ifdef ZMQ_GSSAPI_PLAINTEXT
1501 #ifdef ZMQ_GSSAPI_SERVER
1504 #ifdef ZMQ_GSSAPI_SERVICE_PRINCIPAL
1507 #ifdef ZMQ_GSSAPI_SERVICE_PRINCIPAL_NAMETYPE
1509 gssapi_service_principal_nametype,
1512 #ifdef ZMQ_GSSAPI_PRINCIPAL
1515 #ifdef ZMQ_GSSAPI_PRINCIPAL_NAMETYPE
1517 gssapi_principal_nametype,
1520 #ifdef ZMQ_HANDSHAKE_IVL
1523 #ifdef ZMQ_HEARTBEAT_IVL
1526 #ifdef ZMQ_HEARTBEAT_TIMEOUT
1529 #ifdef ZMQ_HEARTBEAT_TTL
1532 #ifdef ZMQ_HELLO_MSG
1535 #ifdef ZMQ_IMMEDIATE
1536 ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(
ZMQ_IMMEDIATE, immediate,
int);
1538 #ifdef ZMQ_INVERT_MATCHING
1542 ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(
ZMQ_IPV6, ipv6,
int);
1544 #ifdef ZMQ_LAST_ENDPOINT
1548 ZMQ_DEFINE_INTEGRAL_OPT(
ZMQ_LINGER, linger,
int);
1550 #ifdef ZMQ_MAXMSGSIZE
1553 #ifdef ZMQ_MECHANISM
1559 #ifdef ZMQ_MULTICAST_HOPS
1562 #ifdef ZMQ_MULTICAST_LOOP
1565 #ifdef ZMQ_MULTICAST_MAXTPDU
1568 #ifdef ZMQ_ONLY_FIRST_SUBSCRIBE
1571 #ifdef ZMQ_PLAIN_SERVER
1574 #ifdef ZMQ_PLAIN_PASSWORD
1577 #ifdef ZMQ_PLAIN_USERNAME
1584 ZMQ_DEFINE_INTEGRAL_OPT(
ZMQ_USE_FD, use_fd,
int);
1586 #ifdef ZMQ_PROBE_ROUTER
1590 ZMQ_DEFINE_INTEGRAL_OPT(
ZMQ_RATE, rate,
int);
1593 ZMQ_DEFINE_INTEGRAL_OPT(
ZMQ_RCVBUF, rcvbuf,
int);
1596 ZMQ_DEFINE_INTEGRAL_OPT(
ZMQ_RCVHWM, rcvhwm,
int);
1599 ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(
ZMQ_RCVMORE, rcvmore,
int);
1604 #ifdef ZMQ_RECONNECT_IVL
1607 #ifdef ZMQ_RECONNECT_IVL_MAX
1610 #ifdef ZMQ_RECONNECT_STOP
1613 #ifdef ZMQ_RECOVERY_IVL
1616 #ifdef ZMQ_REQ_CORRELATE
1619 #ifdef ZMQ_REQ_RELAXED
1622 #ifdef ZMQ_ROUTER_HANDOVER
1625 #ifdef ZMQ_ROUTER_MANDATORY
1628 #ifdef ZMQ_ROUTER_NOTIFY
1631 #ifdef ZMQ_ROUTER_RAW
1634 #ifdef ZMQ_ROUTING_ID
1638 ZMQ_DEFINE_INTEGRAL_OPT(
ZMQ_SNDBUF, sndbuf,
int);
1641 ZMQ_DEFINE_INTEGRAL_OPT(
ZMQ_SNDHWM, sndhwm,
int);
1646 #ifdef ZMQ_SOCKS_PASSWORD
1649 #ifdef ZMQ_SOCKS_PROXY
1652 #ifdef ZMQ_SOCKS_USERNAME
1655 #ifdef ZMQ_STREAM_NOTIFY
1658 #ifdef ZMQ_SUBSCRIBE
1661 #ifdef ZMQ_TCP_KEEPALIVE
1664 #ifdef ZMQ_TCP_KEEPALIVE_CNT
1667 #ifdef ZMQ_TCP_KEEPALIVE_IDLE
1670 #ifdef ZMQ_TCP_KEEPALIVE_INTVL
1673 #ifdef ZMQ_TCP_MAXRT
1676 #ifdef ZMQ_THREAD_SAFE
1680 ZMQ_DEFINE_INTEGRAL_OPT(
ZMQ_TOS, tos,
int);
1685 ZMQ_DEFINE_INTEGRAL_OPT(
ZMQ_TYPE, socket_type, socket_type);
1688 #ifdef ZMQ_UNSUBSCRIBE
1691 #ifdef ZMQ_VMCI_BUFFER_SIZE
1694 #ifdef ZMQ_VMCI_BUFFER_MIN_SIZE
1697 #ifdef ZMQ_VMCI_BUFFER_MAX_SIZE
1700 #ifdef ZMQ_VMCI_CONNECT_TIMEOUT
1703 #ifdef ZMQ_XPUB_VERBOSE
1706 #ifdef ZMQ_XPUB_VERBOSER
1709 #ifdef ZMQ_XPUB_MANUAL
1712 #ifdef ZMQ_XPUB_MANUAL_LAST_VALUE
1715 #ifdef ZMQ_XPUB_NODROP
1718 #ifdef ZMQ_XPUB_WELCOME_MSG
1721 #ifdef ZMQ_ZAP_ENFORCE_DOMAIN
1724 #ifdef ZMQ_ZAP_DOMAIN
1740 template<
typename T>
1763 template<
typename T>
1768 size_t optlen =
sizeof(
T);
1776 template<
int Opt,
class T,
bool BoolUnit>
1777 void set(sockopt::integral_option<Opt, T, BoolUnit>,
const T &
val)
1785 template<
int Opt,
class T>
1786 void set(sockopt::integral_option<Opt, T, true>,
bool val)
1795 template<
int Opt,
int NullTerm>
1796 void set(sockopt::array_option<Opt, NullTerm>,
const char *
buf)
1803 template<
int Opt,
int NullTerm>
1804 void set(sockopt::array_option<Opt, NullTerm>, const_buffer
buf)
1811 template<
int Opt,
int NullTerm>
1817 #if CPPZMQ_HAS_STRING_VIEW
1820 template<
int Opt,
int NullTerm>
1821 void set(sockopt::array_option<Opt, NullTerm>, std::string_view
buf)
1829 template<
int Opt,
class T,
bool BoolUnit>
1842 template<
int Opt,
int NullTerm>
1844 mutable_buffer
buf)
const
1855 template<
int Opt,
int NullTerm>
1857 size_t init_size = 1024)
const
1860 if (init_size == 1024) {
1868 assert(
str[
size - 1] ==
'\0');
1874 assert(
str[
size - 1] ==
'\0');
1919 ZMQ_DEPRECATED(
"from 4.7.1, use handle() != nullptr or operator bool")
1927 return static_cast<size_t>(nbytes);
1945 template<
typename T>
1947 "from 4.4.1, use send taking message_t or buffer (for contiguous "
1948 "ranges), and send_flags")
1960 #ifdef ZMQ_HAS_RVALUE_REFS
1966 return send(msg_,
static_cast<send_flags
>(
flags_)).has_value();
1974 send_result_t
send(const_buffer
buf, send_flags
flags = send_flags::none)
1979 return static_cast<size_t>(nbytes);
1985 send_result_t
send(message_t &msg, send_flags
flags)
1989 return static_cast<size_t>(nbytes);
1995 send_result_t
send(message_t &&msg, send_flags
flags)
2002 "from 4.3.1, use recv taking a mutable_buffer and recv_flags")
2003 size_t recv(
void *buf_,
size_t len_,
int flags_ = 0)
2007 return static_cast<size_t>(nbytes);
2014 "from 4.3.1, use recv taking a reference to message_t and recv_flags")
2015 bool recv(message_t *msg_,
int flags_ = 0)
2027 recv_buffer_result_t recv(mutable_buffer
buf,
2028 recv_flags
flags = recv_flags::none)
2033 return recv_buffer_size{
2034 (std::min)(
static_cast<size_t>(nbytes),
buf.size()),
2035 static_cast<size_t>(nbytes)};
2043 recv_result_t recv(message_t &msg, recv_flags
flags = recv_flags::none)
2048 assert(msg.size() ==
static_cast<size_t>(nbytes));
2049 return static_cast<size_t>(nbytes);
2057 #if defined(ZMQ_BUILD_DRAFT_API) && ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 0)
2058 void join(
const char *
group)
2065 void leave(
const char *
group)
2085 void set_option(
int option_,
const void *optval_,
size_t optvallen_)
2092 void get_option(
int option_,
void *optval_,
size_t *optvallen_)
const
2130 return sr.handle() ==
nullptr;
2134 return sr.handle() ==
nullptr;
2138 return !(sr ==
nullptr);
2142 return !(sr ==
nullptr);
2148 return std::equal_to<const void *>()(
a.handle(),
b.handle());
2156 return std::less<const void *>()(
a.handle(),
b.handle());
2176 template<>
struct hash<
zmq::socket_ref>
2180 return hash<void *>()(sr.handle());
2210 #ifdef ZMQ_HAS_RVALUE_REFS
2289 #ifdef ZMQ_HAS_PROXY_STEERABLE
2290 ZMQ_DEPRECATED(
"from 4.3.1, use proxy_steerable taking socket_t objects")
2305 capture.handle(), control.handle());
2318 #ifdef ZMQ_HAS_RVALUE_REFS
2339 monitor(socket, addr.c_str(), events);
2344 init(socket, addr_, events);
2352 init(socket, addr.c_str(), events);
2385 #ifdef ZMQ_EVENT_MONITOR_STOPPED
2394 virtual void on_monitor_stopped() {}
2449 #if ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 3)
2474 #elif ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 1)
2475 virtual void on_event_handshake_failed(
const zmq_event_t &event_,
2481 virtual void on_event_handshake_succeed(
const zmq_event_t &event_,
2509 #if ZMQ_VERSION_MAJOR >= 4
2510 const char *
data =
static_cast<const char *
>(eventMsg.
data());
2512 memcpy(&msgEvent.
event,
data,
sizeof(uint16_t));
2513 data +=
sizeof(uint16_t);
2514 memcpy(&msgEvent.
value,
data,
sizeof(int32_t));
2520 #ifdef ZMQ_NEW_MONITOR_EVENT_LAYOUT
2534 #ifdef ZMQ_EVENT_MONITOR_STOPPED
2536 on_monitor_stopped();
2542 switch (
event->event) {
2573 #if ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 3, 0) || (defined(ZMQ_BUILD_DRAFT_API) && ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 3))
2586 #elif defined(ZMQ_BUILD_DRAFT_API) && ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 1)
2587 case ZMQ_EVENT_HANDSHAKE_FAILED:
2590 case ZMQ_EVENT_HANDSHAKE_SUCCEED:
2619 #if defined(ZMQ_BUILD_DRAFT_API) && defined(ZMQ_CPP11) && defined(ZMQ_HAVE_POLLER)
2622 enum class event_flags : short
2631 constexpr event_flags operator|(event_flags
a, event_flags
b) noexcept
2633 return detail::enum_bit_or(
a,
b);
2635 constexpr event_flags operator&(event_flags
a, event_flags
b) noexcept
2637 return detail::enum_bit_and(
a,
b);
2639 constexpr event_flags operator^(event_flags
a, event_flags
b) noexcept
2641 return detail::enum_bit_xor(
a,
b);
2643 constexpr event_flags
operator~(event_flags
a) noexcept
2645 return detail::enum_bit_not(
a);
2648 struct no_user_data;
2651 template<
class T = no_user_data>
struct poller_event
2659 template<
typename T = no_user_data>
class poller_t
2662 using event_type = poller_event<T>;
2676 add_impl(socket, events, user_data);
2681 add_impl(socket, events,
nullptr);
2688 void add(
fd_t fd, event_flags events,
T *user_data)
2690 add_impl(fd, events, user_data);
2693 void add(
fd_t fd, event_flags events) { add_impl(fd, events,
nullptr); }
2702 void remove(
fd_t fd)
2713 static_cast<short>(events))) {
2718 void modify(
fd_t fd, event_flags events)
2722 static_cast<short>(events))) {
2727 template <
typename Sequence>
2728 size_t wait_all(Sequence &poller_events,
2729 const std::chrono::milliseconds
timeout)
2732 "Sequence::value_type must be of poller_t::event_type");
2736 static_cast<int>(poller_events.size()),
2737 static_cast<long>(
timeout.count()));
2739 return static_cast<size_t>(rc);
2741 #if ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 3)
2751 #if ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 3, 3)
2756 return static_cast<size_t>(std::max(rc, 0));
2761 struct destroy_poller_t
2763 void operator()(
void *ptr) noexcept
2770 std::unique_ptr<void, destroy_poller_t> poller_ptr;
2776 static_cast<short>(events))) {
2781 void add_impl(
fd_t fd, event_flags events,
T *user_data)
2785 static_cast<short>(events))) {
2790 #endif // defined(ZMQ_BUILD_DRAFT_API) && defined(ZMQ_CPP11) && defined(ZMQ_HAVE_POLLER)
2794 return os << msg.
str();
2799 #endif // __ZMQ_HPP_INCLUDED__
#define ZMQ_RECONNECT_STOP
#define ZMQ_SOCKS_PASSWORD
virtual void on_monitor_started()
#define ZMQ_MAX_SOCKETS_DFLT
const ZMQ_EXPORT char * zmq_strerror(int errnum_)
ZMQ_EXPORT int zmq_ctx_set(void *context_, int option_, int optval_)
MockGeneratorContext context_
const char * zmq_msg_group(zmq_msg_t *msg_)
const ZMQ_NODISCARD zmq_msg_t * handle() const ZMQ_NOTHROW
ZMQ_EXPORT int zmq_ctx_shutdown(void *context_)
ZMQ_EXPORT void zmq_version(int *major_, int *minor_, int *patch_)
void swap(message_t &a, message_t &b) ZMQ_NOTHROW
int poll(zmq_pollitem_t *items_, size_t nitems_, long timeout_=-1)
virtual void on_event_handshake_failed_auth(const zmq_event_t &event_, const char *addr_)
void move(message_t &msg_)
const T * data() const ZMQ_NOTHROW
void proxy(void *frontend, void *backend, void *capture)
#define ZMQ_EVENT_HANDSHAKE_FAILED_NO_DETAIL
#define ZMQ_HEARTBEAT_IVL
#define ZMQ_EVENT_HANDSHAKE_FAILED_AUTH
int zmq_msg_set_group(zmq_msg_t *msg_, const char *group_)
void monitor(socket_t &socket, std::string const &addr, int events=ZMQ_EVENT_ALL)
#define ZMQ_PLAIN_USERNAME
bool connected() const ZMQ_NOTHROW
#define ZMQ_THREAD_AFFINITY_CPU_REMOVE
void swap(socket_t &other) ZMQ_NOTHROW
virtual void on_event_handshake_failed_no_detail(const zmq_event_t &event_, const char *addr_)
virtual void on_event_unknown(const zmq_event_t &event_, const char *addr_)
uint128 operator*(const uint128 &lhs, const uint128 &rhs)
ZMQ_CONSTEXPR_FN ZMQ_EXPLICIT from_handle_t(_private) ZMQ_NOTHROW
virtual void on_event_bind_failed(const zmq_event_t &event_, const char *addr_)
zmq_pollitem_t pollitem_t
void copy(message_t const *msg_)
ROSCPP_DECL bool get(const std::string &key, bool &b)
#define ZMQ_ZAP_ENFORCE_DOMAIN
std::string to_string() const
ZMQ_EXPORT int zmq_errno(void)
ZMQ_EXPORT int zmq_msg_move(zmq_msg_t *dest_, zmq_msg_t *src_)
#define ZMQ_GSSAPI_PRINCIPAL_NAMETYPE
#define ZMQ_DELETED_FUNCTION
ZMQ_EXPORT int zmq_unbind(void *s_, const char *addr_)
void operator=(const context_t &) ZMQ_DELETED_FUNCTION
ZMQ_EXPORT int zmq_socket_monitor(void *s_, const char *addr_, int events_)
ZMQ_EXPORT int zmq_msg_send(zmq_msg_t *msg_, void *s_, int flags_)
int setctxopt(int option_, int optval_)
ZMQ_NODISCARD zmq_msg_t * handle() ZMQ_NOTHROW
ZMQ_EXPORT int zmq_poll(zmq_pollitem_t *items_, int nitems_, long timeout_)
ZMQ_EXPORT void * zmq_ctx_new(void)
#define ZMQ_CURVE_SECRETKEY
void swap(context_t &other) ZMQ_NOTHROW
Duration & operator+=(Duration &d1, const Duration &d2)
void * data() ZMQ_NOTHROW
#define ZMQ_EVENT_BIND_FAILED
ZMQ_EXPORT int zmq_msg_get(const zmq_msg_t *msg_, int property_)
socket_t(void *context_, int type_)
virtual void on_event_disconnected(const zmq_event_t &event_, const char *addr_)
bool operator>(const detail::socket_base &a, const detail::socket_base &b) ZMQ_NOTHROW
#define ZMQ_VMCI_BUFFER_MIN_SIZE
IMGUI_API void Dummy(const ImVec2 &size)
#define ZMQ_PLAIN_PASSWORD
#define ZMQ_LAST_ENDPOINT
#define ZMQ_CURVE_SERVERKEY
const void * data() const ZMQ_NOTHROW
ZMQ_CONSTEXPR_VAR from_handle_t from_handle
ZMQ_CPP11_DEPRECATED("from 4.4.1, use send taking message_t or buffer (for contiguous " "ranges), and send_flags") bool send(T first
#define ZMQ_STREAM_NOTIFY
int zmq_poller_remove_fd(void *poller_, zmq::fd_t fd_)
virtual void on_event_accept_failed(const zmq_event_t &event_, const char *addr_)
#define ZMQ_XPUB_MANUAL_LAST_VALUE
void bind(const char *addr_)
void setsockopt(int option_, T const &optval)
void monitor(socket_t &socket, const char *addr_, int events=ZMQ_EVENT_ALL)
#define ZMQ_CONNECT_TIMEOUT
bool more() const ZMQ_NOTHROW
#define ZMQ_EVENT_CLOSE_FAILED
virtual void on_event_listening(const zmq_event_t &event_, const char *addr_)
GLsizei const GLchar *const * string
#define ZMQ_CONSTEXPR_VAR
void swap(message_t &other) ZMQ_NOTHROW
#define ZMQ_MULTICAST_LOOP
#define ZMQ_ASSERT(expression)
void unbind(std::string const &addr)
bool operator<(const detail::socket_base &a, const detail::socket_base &b) ZMQ_NOTHROW
bool check_event(int timeout=0)
bool operator>=(const detail::socket_base &a, const detail::socket_base &b) ZMQ_NOTHROW
#define ZMQ_HEARTBEAT_TIMEOUT
size_t send(const void *buf_, size_t len_, int flags_=0)
#define T(upbtypeconst, upbtype, ctype, default_value)
bool equal(const message_t *other) const ZMQ_NOTHROW
ZMQ_EXPLICIT socket_base(void *handle) ZMQ_NOTHROW
void operator=(const socket_t &) ZMQ_DELETED_FUNCTION
bool operator==(const detail::socket_base &a, const detail::socket_base &b) ZMQ_NOTHROW
ZMQ_EXPORT void * zmq_msg_data(zmq_msg_t *msg_)
void disconnect(const char *addr_)
std::ostream & operator<<(std::ostream &os, const message_t &msg)
ZMQ_EXPORT int zmq_connect(void *s_, const char *addr_)
#define ZMQ_THREAD_SCHED_POLICY
#define ZMQ_VMCI_BUFFER_MAX_SIZE
int zmq_poller_modify_fd(void *poller_, zmq::fd_t fd_, short events_)
#define ZMQ_EVENT_LISTENING
GLboolean GLboolean GLboolean b
message_t(ForwardIter first, ForwardIter last)
#define ZMQ_TCP_KEEPALIVE_INTVL
#define ZMQ_DEPRECATED(msg)
#define ZMQ_ZERO_COPY_RECV
ZMQ_EXPORT int zmq_msg_init_data(zmq_msg_t *msg_, void *data_, size_t size_, zmq_free_fn *ffn_, void *hint_)
ZMQ_EXPORT size_t zmq_msg_size(const zmq_msg_t *msg_)
void init(socket_t &socket, std::string const &addr, int events=ZMQ_EVENT_ALL)
#define ZMQ_RECONNECT_IVL_MAX
static size_t begin(const upb_table *t)
#define ZMQ_CONNECT_ROUTING_ID
#define ZMQ_EVENT_HANDSHAKE_SUCCEEDED
const ZMQ_EXPORT char * zmq_msg_gets(const zmq_msg_t *msg_, const char *property_)
void set_option(int option_, const void *optval_, size_t optvallen_)
#define ZMQ_VMCI_CONNECT_TIMEOUT
int zmq_poller_modify(void *poller_, void *s_, short events_)
#define ZMQ_ROUTER_HANDOVER
ZMQ_NODISCARD void * handle() ZMQ_NOTHROW
#define ZMQ_XPUB_WELCOME_MSG
ZMQ_EXPORT int zmq_setsockopt(void *s_, int option_, const void *optval_, size_t optvallen_)
#define ZMQ_EVENT_CONNECTED
virtual void on_event_handshake_failed_protocol(const zmq_event_t &event_, const char *addr_)
ZMQ_EXPORT int zmq_disconnect(void *s_, const char *addr_)
void rebuild(const std::string &str)
void * zmq_poller_new(void)
void version(int *major_, int *minor_, int *patch_)
int num() const ZMQ_NOTHROW
#define ZMQ_TCP_KEEPALIVE_IDLE
#define ZMQ_DISCONNECT_MSG
integral_constant< bool, false > false_type
bool operator!=(const message_t &other) const ZMQ_NOTHROW
bool process_event(short events)
void swap(Json::Value &a, Json::Value &b)
Specialize std::swap() for Json::Value.
socket_ref(from_handle_t, void *handle) ZMQ_NOTHROW
static UPB_NORETURN void err(tarjan *t)
ZMQ_EXPORT int zmq_bind(void *s_, const char *addr_)
int poll(zmq_pollitem_t *items_, size_t nitems_, long timeout_)
const char * gets(const char *property_)
ZMQ_EXPORT int zmq_msg_recv(zmq_msg_t *msg_, void *s_, int flags_)
integral_constant< bool, true > true_type
GLbitfield GLuint64 timeout
ZMQ_EXPORT void * zmq_socket(void *, int type_)
#define ZMQ_INVERT_MATCHING
#define ZMQ_GSSAPI_SERVICE_PRINCIPAL
#define ZMQ_MULTICAST_MAXTPDU
SETUP_TEARDOWN_TESTCONTEXT typedef uint8_t byte
virtual void on_event_close_failed(const zmq_event_t &event_, const char *addr_)
#define ZMQ_THREAD_PRIORITY
void shutdown() ZMQ_NOTHROW
int zmq_leave(void *s_, const char *group_)
#define ZMQ_VMCI_BUFFER_SIZE
virtual void on_event_closed(const zmq_event_t &event_, const char *addr_)
GLenum GLuint GLenum GLsizei const GLchar * buf
#define ZMQ_CPP11_DEPRECATED(msg)
void proxy_steerable(void *frontend, void *backend, void *capture, void *control)
#define ZMQ_EVENT_ACCEPT_FAILED
#define ZMQ_GSSAPI_PRINCIPAL
virtual void on_event_handshake_succeeded(const zmq_event_t &event_, const char *addr_)
socket_base() ZMQ_NOTHROW
#define ZMQ_TCP_KEEPALIVE
ZMQ_EXPORT int zmq_msg_init(zmq_msg_t *msg_)
typedef void(APIENTRY *GLDEBUGPROCARB)(GLenum source
ZMQ_EXPORT int zmq_close(void *s_)
void() zmq_free_fn(void *data_, void *hint_)
#define ZMQ_HEARTBEAT_TTL
void rebuild(const void *data_, size_t size_)
int zmq_msg_set_routing_id(zmq_msg_t *msg_, uint32_t routing_id_)
message_t(const void *data_, size_t size_)
#define ZMQ_ROUTER_MANDATORY
int zmq_join(void *s_, const char *group_)
#define ZMQ_HANDSHAKE_IVL
#define ZMQ_THREAD_AFFINITY_CPU_ADD
virtual void on_event_connect_retried(const zmq_event_t &event_, const char *addr_)
uint128 operator~(const uint128 &val)
socket_ref monitor_socket()
void init(socket_t &socket, const char *addr_, int events=ZMQ_EVENT_ALL)
void getsockopt(int option_, void *optval_, size_t *optvallen_) const
#define ZMQ_ONLY_FIRST_SUBSCRIBE
#define ZMQ_EVENT_CONNECT_DELAYED
#define ZMQ_XPUB_VERBOSER
void connect(const char *addr_)
ZMQ_EXPORT int zmq_ctx_get(void *context_, int option_)
#define ZMQ_GSSAPI_SERVER
int zmq_poller_size(void *poller_)
socket_t(context_t &context_, int type_)
ZMQ_EXPORT int zmq_recv(void *s_, void *buf_, size_t len_, int flags_)
#define ZMQ_EVENT_ACCEPTED
ZMQ_EXPORT int zmq_proxy_steerable(void *frontend_, void *backend_, void *capture_, void *control_)
#define ZMQ_EVENT_CONNECT_RETRIED
int zmq_poller_add(void *poller_, void *s_, void *user_data_, short events_)
ZMQ_EXPORT int zmq_proxy(void *frontend_, void *backend_, void *capture_)
zend_class_entry * value_type
#define ZMQ_EVENT_DISCONNECTED
bool operator!=(const detail::socket_base &a, const detail::socket_base &b) ZMQ_NOTHROW
void get_option(int option_, void *optval_, size_t *optvallen_) const
virtual void on_event_connected(const zmq_event_t &event_, const char *addr_)
ZMQ_EXPORT int zmq_msg_init_size(zmq_msg_t *msg_, size_t size_)
void disconnect(std::string const &addr)
ZMQ_EXPORT int zmq_msg_copy(zmq_msg_t *dest_, zmq_msg_t *src_)
void connect(std::string const &addr)
#define ZMQ_GSSAPI_SERVICE_PRINCIPAL_NAMETYPE
static void push(tarjan *t, const upb_refcounted *r)
#define ZMQ_EVENT_HANDSHAKE_FAILED_PROTOCOL
void bind(std::string const &addr)
static int capture(class zmq::socket_base_t *capture_, zmq::msg_t *msg_, int more_=0)
#define ZMQ_REQ_CORRELATE
#define ZMQ_THREAD_NAME_PREFIX
void copy(message_t &msg_)
uint32_t zmq_msg_routing_id(zmq_msg_t *msg_)
void rebuild(size_t size_)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
#define ZMQ_ROUTER_NOTIFY
ZMQ_NODISCARD bool empty() const ZMQ_NOTHROW
int zmq_poller_remove(void *poller_, void *s_)
bool operator==(const message_t &other) const ZMQ_NOTHROW
error_t(int err) ZMQ_NOTHROW
void operator=(const message_t &) ZMQ_DELETED_FUNCTION
#define ZMQ_RECONNECT_IVL
virtual void on_event_accepted(const zmq_event_t &event_, const char *addr_)
#define ZMQ_GSSAPI_PLAINTEXT
ZMQ_EXPORT int zmq_ctx_term(void *context_)
int zmq_poller_add_fd(void *poller_, zmq::fd_t fd_, void *user_data_, short events_)
context_t(int io_threads_, int max_sockets_=ZMQ_MAX_SOCKETS_DFLT)
GLsizei const GLfloat * value
virtual void on_event_connect_delayed(const zmq_event_t &event_, const char *addr_)
ZMQ_EXPORT int zmq_send(void *s_, const void *buf_, size_t len_, int flags_)
void unbind(const char *addr_)
ZMQ_EXPORT int zmq_msg_more(const zmq_msg_t *msg_)
#define ZMQ_TCP_KEEPALIVE_CNT
void move(message_t const *msg_)
size_t size() const ZMQ_NOTHROW
virtual const char * what() const ZMQ_NOTHROW ZMQ_OVERRIDE
static uint32_t * group(tarjan *t, upb_refcounted *r)
GLboolean GLboolean GLboolean GLboolean a
ZMQ_EXPORT int zmq_msg_close(zmq_msg_t *msg_)
int getctxopt(int option_)
#define ZMQ_MULTICAST_HOPS
void rebuild(void *data_, size_t size_, free_fn *ffn_, void *hint_=ZMQ_NULLPTR)
int zmq_poller_destroy(void **poller_p_)
ZMQ_EXPORT int zmq_getsockopt(void *s_, int option_, void *optval_, size_t *optvallen_)
#define ZMQ_CURVE_PUBLICKEY
int zmq_poller_wait_all(void *poller_, zmq_poller_event_t *events_, int n_events_, long timeout_)
uint128 operator+(const uint128 &lhs, const uint128 &rhs)
#define ZMQ_EVENT_MONITOR_STOPPED
message_t(void *data_, size_t size_, free_fn *ffn_, void *hint_=ZMQ_NULLPTR)
#define ZMQ_SOCKS_USERNAME
void operator=(const monitor_t &) ZMQ_DELETED_FUNCTION
bool operator<=(const detail::socket_base &a, const detail::socket_base &b) ZMQ_NOTHROW
libaditof
Author(s):
autogenerated on Wed May 21 2025 02:07:02