mirror of
https://github.com/zeromq/libzmq.git
synced 2025-10-29 12:18:04 +01:00
ZMQ_TYPE socket option added
This commit is contained in:
committed by
Martin Sustrik
parent
6715f9b185
commit
87beaaa00d
1
.gitignore
vendored
1
.gitignore
vendored
@@ -35,6 +35,7 @@ doc/*.7
|
|||||||
doc/*.html
|
doc/*.html
|
||||||
doc/*.xml
|
doc/*.xml
|
||||||
src/libzmq.pc
|
src/libzmq.pc
|
||||||
|
bin/
|
||||||
lib/
|
lib/
|
||||||
builds/msvc/*.suo
|
builds/msvc/*.suo
|
||||||
builds/msvc/*/*.user
|
builds/msvc/*/*.user
|
||||||
|
|||||||
@@ -26,6 +26,19 @@ value stored in the buffer.
|
|||||||
The following options can be retrieved with the _zmq_getsockopt()_ function:
|
The following options can be retrieved with the _zmq_getsockopt()_ function:
|
||||||
|
|
||||||
|
|
||||||
|
ZMQ_TYPE: Retrieve socket type.
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
The 'ZMQ_TYPE option shall retrieve the socket type for the specified
|
||||||
|
'socket'. The socket type is specified at socket creation time and
|
||||||
|
cannot be modified afterwards.
|
||||||
|
|
||||||
|
[horizontal]
|
||||||
|
Option value type:: int
|
||||||
|
Option value unit:: N/A
|
||||||
|
Default value:: N/A
|
||||||
|
Applicable socket types:: all
|
||||||
|
|
||||||
|
|
||||||
ZMQ_RCVMORE: More message parts to follow
|
ZMQ_RCVMORE: More message parts to follow
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
The 'ZMQ_RCVMORE' option shall return a boolean value indicating if the
|
The 'ZMQ_RCVMORE' option shall return a boolean value indicating if the
|
||||||
|
|||||||
@@ -179,6 +179,7 @@ ZMQ_EXPORT int zmq_term (void *context);
|
|||||||
#define ZMQ_RCVMORE 13
|
#define ZMQ_RCVMORE 13
|
||||||
#define ZMQ_FD 14
|
#define ZMQ_FD 14
|
||||||
#define ZMQ_EVENTS 15
|
#define ZMQ_EVENTS 15
|
||||||
|
#define ZMQ_TYPE 16
|
||||||
|
|
||||||
/* Send/recv options. */
|
/* Send/recv options. */
|
||||||
#define ZMQ_NOBLOCK 1
|
#define ZMQ_NOBLOCK 1
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ zmq::options_t::options_t () :
|
|||||||
use_multicast_loop (true),
|
use_multicast_loop (true),
|
||||||
sndbuf (0),
|
sndbuf (0),
|
||||||
rcvbuf (0),
|
rcvbuf (0),
|
||||||
|
type (-1),
|
||||||
requires_in (false),
|
requires_in (false),
|
||||||
requires_out (false),
|
requires_out (false),
|
||||||
immediate_connect (true)
|
immediate_connect (true)
|
||||||
@@ -137,6 +138,15 @@ int zmq::options_t::getsockopt (int option_, void *optval_, size_t *optvallen_)
|
|||||||
{
|
{
|
||||||
switch (option_) {
|
switch (option_) {
|
||||||
|
|
||||||
|
case ZMQ_TYPE:
|
||||||
|
if (*optvallen_ < sizeof (int)) {
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
*((int*) optval_) = type;
|
||||||
|
*optvallen_ = sizeof (int);
|
||||||
|
return 0;
|
||||||
|
|
||||||
case ZMQ_HWM:
|
case ZMQ_HWM:
|
||||||
if (*optvallen_ < sizeof (uint64_t)) {
|
if (*optvallen_ < sizeof (uint64_t)) {
|
||||||
errno = EINVAL;
|
errno = EINVAL;
|
||||||
|
|||||||
@@ -51,6 +51,9 @@ namespace zmq
|
|||||||
uint64_t sndbuf;
|
uint64_t sndbuf;
|
||||||
uint64_t rcvbuf;
|
uint64_t rcvbuf;
|
||||||
|
|
||||||
|
// Socket type.
|
||||||
|
int type;
|
||||||
|
|
||||||
// These options are never set by the user directly. Instead they are
|
// These options are never set by the user directly. Instead they are
|
||||||
// provided by the specific socket type.
|
// provided by the specific socket type.
|
||||||
bool requires_in;
|
bool requires_in;
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ zmq::pair_t::pair_t (class ctx_t *parent_, uint32_t slot_) :
|
|||||||
outpipe_alive (false),
|
outpipe_alive (false),
|
||||||
terminating (false)
|
terminating (false)
|
||||||
{
|
{
|
||||||
|
options.type = ZMQ_PAIR;
|
||||||
options.requires_in = true;
|
options.requires_in = true;
|
||||||
options.requires_out = true;
|
options.requires_out = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ zmq::pub_t::pub_t (class ctx_t *parent_, uint32_t slot_) :
|
|||||||
active (0),
|
active (0),
|
||||||
terminating (false)
|
terminating (false)
|
||||||
{
|
{
|
||||||
|
options.type = ZMQ_PUB;
|
||||||
options.requires_in = false;
|
options.requires_in = false;
|
||||||
options.requires_out = true;
|
options.requires_out = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ zmq::pull_t::pull_t (class ctx_t *parent_, uint32_t slot_) :
|
|||||||
socket_base_t (parent_, slot_),
|
socket_base_t (parent_, slot_),
|
||||||
fq (this)
|
fq (this)
|
||||||
{
|
{
|
||||||
|
options.type = ZMQ_PULL;
|
||||||
options.requires_in = true;
|
options.requires_in = true;
|
||||||
options.requires_out = false;
|
options.requires_out = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ zmq::push_t::push_t (class ctx_t *parent_, uint32_t slot_) :
|
|||||||
socket_base_t (parent_, slot_),
|
socket_base_t (parent_, slot_),
|
||||||
lb (this)
|
lb (this)
|
||||||
{
|
{
|
||||||
|
options.type = ZMQ_PUSH;
|
||||||
options.requires_in = false;
|
options.requires_in = false;
|
||||||
options.requires_out = true;
|
options.requires_out = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ zmq::rep_t::rep_t (class ctx_t *parent_, uint32_t slot_) :
|
|||||||
sending_reply (false),
|
sending_reply (false),
|
||||||
request_begins (true)
|
request_begins (true)
|
||||||
{
|
{
|
||||||
|
options.type = ZMQ_REP;
|
||||||
}
|
}
|
||||||
|
|
||||||
zmq::rep_t::~rep_t ()
|
zmq::rep_t::~rep_t ()
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ zmq::req_t::req_t (class ctx_t *parent_, uint32_t slot_) :
|
|||||||
receiving_reply (false),
|
receiving_reply (false),
|
||||||
message_begins (true)
|
message_begins (true)
|
||||||
{
|
{
|
||||||
|
options.type = ZMQ_REQ;
|
||||||
}
|
}
|
||||||
|
|
||||||
zmq::req_t::~req_t ()
|
zmq::req_t::~req_t ()
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ zmq::sub_t::sub_t (class ctx_t *parent_, uint32_t slot_) :
|
|||||||
has_message (false),
|
has_message (false),
|
||||||
more (false)
|
more (false)
|
||||||
{
|
{
|
||||||
|
options.type = ZMQ_SUB;
|
||||||
options.requires_in = true;
|
options.requires_in = true;
|
||||||
options.requires_out = false;
|
options.requires_out = false;
|
||||||
zmq_msg_init (&message);
|
zmq_msg_init (&message);
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ zmq::xrep_t::xrep_t (class ctx_t *parent_, uint32_t slot_) :
|
|||||||
more_out (false),
|
more_out (false),
|
||||||
terminating (false)
|
terminating (false)
|
||||||
{
|
{
|
||||||
|
options.type = ZMQ_XREP;
|
||||||
options.requires_in = true;
|
options.requires_in = true;
|
||||||
options.requires_out = true;
|
options.requires_out = true;
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ zmq::xreq_t::xreq_t (class ctx_t *parent_, uint32_t slot_) :
|
|||||||
fq (this),
|
fq (this),
|
||||||
lb (this)
|
lb (this)
|
||||||
{
|
{
|
||||||
|
options.type = ZMQ_XREQ;
|
||||||
options.requires_in = true;
|
options.requires_in = true;
|
||||||
options.requires_out = true;
|
options.requires_out = true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user