25 _routing_id.set (
static_cast<const unsigned char *
> (id_ptr_), id_size_);
30 const int rc = msg_->
init_size (_routing_id.size ());
32 memcpy (msg_->
data (), _routing_id.data (), _routing_id.size ());
38 _user_id.set (
static_cast<const unsigned char *
> (user_id_), size_);
39 _zap_properties.ZMQ_MAP_INSERT_OR_EMPLACE (
41 std::string (
reinterpret_cast<const char *
> (user_id_), size_));
61 #ifdef ZMQ_BUILD_DRAFT_API
62 const char socket_type_server[] =
"SERVER";
63 const char socket_type_client[] =
"CLIENT";
64 const char socket_type_radio[] =
"RADIO";
65 const char socket_type_dish[] =
"DISH";
66 const char socket_type_gather[] =
"GATHER";
67 const char socket_type_scatter[] =
"SCATTER";
68 const char socket_type_dgram[] =
"DGRAM";
69 const char socket_type_peer[] =
"PEER";
70 const char socket_type_channel[] =
"CHANNEL";
82 #ifdef ZMQ_BUILD_DRAFT_API
83 socket_type_server, socket_type_client,
84 socket_type_radio, socket_type_dish,
85 socket_type_gather, socket_type_scatter,
86 socket_type_dgram, socket_type_peer,
90 static const size_t names_count =
sizeof (names) /
sizeof (names[0]);
92 && socket_type_ <
static_cast<int> (names_count));
93 return names[socket_type_];
112 size_t ptr_capacity_,
121 *ptr_ =
static_cast<unsigned char> (
name_len);
126 put_uint32 (ptr_,
static_cast<uint32_t
> (value_len_));
128 memcpy (ptr_,
value_, value_len_);
138 #define ZMTP_PROPERTY_SOCKET_TYPE "Socket-Type"
139 #define ZMTP_PROPERTY_IDENTITY "Identity"
142 size_t ptr_capacity_)
const
144 unsigned char *ptr = ptr_;
154 ptr += add_property (ptr, ptr_capacity_ - (ptr - ptr_),
160 for (std::map<std::string, std::string>::const_iterator
165 add_property (ptr, ptr_capacity_ - (ptr - ptr_),
it->first.c_str (),
166 it->second.c_str (), strlen (
it->second.c_str ()));
177 for (std::map<std::string, std::string>::const_iterator
194 msg_t *msg_,
const char *
prefix_,
size_t prefix_len_)
const
196 const size_t command_size = prefix_len_ + basic_properties_len ();
197 const int rc = msg_->
init_size (command_size);
200 unsigned char *ptr =
static_cast<unsigned char *
> (msg_->
data ());
203 memcpy (ptr,
prefix_, prefix_len_);
206 add_basic_properties (
207 ptr, command_size - (ptr -
static_cast<unsigned char *
> (msg_->
data ())));
214 size_t bytes_left = length_;
216 while (bytes_left > 1) {
217 const size_t name_length =
static_cast<size_t> (*ptr_);
220 if (bytes_left < name_length)
224 std::string (
reinterpret_cast<const char *
> (ptr_), name_length);
226 bytes_left -= name_length;
230 const size_t value_length =
static_cast<size_t> (
get_uint32 (ptr_));
233 if (bytes_left < value_length)
236 const uint8_t *
value = ptr_;
237 ptr_ += value_length;
238 bytes_left -= value_length;
241 set_peer_routing_id (
value, value_length);
243 if (!check_socket_type (
reinterpret_cast<const char *
> (
value),
249 const int rc = property (
name,
value, value_length);
253 (zap_flag_ ? _zap_properties : _zmtp_properties)
258 if (bytes_left > 0) {
276 const size_t actual_len_,
277 const char (&expected_type_)[N])
279 return actual_len_ == N - 1
280 && memcmp (actual_type_, expected_type_, N - 1) == 0;
284 const size_t len_)
const
319 #ifdef ZMQ_BUILD_DRAFT_API
321 return strequals (type_, len_, socket_type_client);
323 return strequals (type_, len_, socket_type_server);
325 return strequals (type_, len_, socket_type_dish);
327 return strequals (type_, len_, socket_type_radio);
329 return strequals (type_, len_, socket_type_scatter);
331 return strequals (type_, len_, socket_type_gather);
333 return strequals (type_, len_, socket_type_dgram);
335 return strequals (type_, len_, socket_type_peer);
337 return strequals (type_, len_, socket_type_channel);