Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
L
libzmq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
libzmq
Commits
a9679da7
Commit
a9679da7
authored
Jun 05, 2013
by
Pieter Hintjens
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Packaging on ZMQ_PROBE_ROUTER
- renamed to ZMQ_PROBE_ROUTER
parent
2344131d
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
31 additions
and
33 deletions
+31
-33
.gitignore
.gitignore
+1
-1
zmq_setsockopt.txt
doc/zmq_setsockopt.txt
+7
-7
zmq.h
include/zmq.h
+1
-1
dealer.cpp
src/dealer.cpp
+6
-8
dealer.hpp
src/dealer.hpp
+2
-2
router.cpp
src/router.cpp
+7
-9
router.hpp
src/router.hpp
+2
-2
Makefile.am
tests/Makefile.am
+2
-2
test_probe_router.cpp
tests/test_probe_router.cpp
+3
-1
No files found.
.gitignore
View file @
a9679da7
...
...
@@ -48,7 +48,7 @@ tests/test_disconnect_inproc
tests/test_ctx_options
tests/test_iov
tests/test_security
tests/test_
router_probe
tests/test_
probe_router
src/platform.hpp*
src/stamp-h1
perf/local_lat
...
...
doc/zmq_setsockopt.txt
View file @
a9679da7
...
...
@@ -13,8 +13,8 @@ SYNOPSIS
*int zmq_setsockopt (void '*socket', int 'option_name', const void '*option_value', size_t 'option_len');*
Caution: All options, with the exception of ZMQ_SUBSCRIBE, ZMQ_UNSUBSCRIBE,
ZMQ_LINGER, ZMQ_ROUTER_MANDATORY, ZMQ_PROBE
, and ZMQ_XPUB_VERBOSE only take
effect for subsequent socket bind/connects.
ZMQ_LINGER, ZMQ_ROUTER_MANDATORY, ZMQ_PROBE
_ROUTER, and ZMQ_XPUB_VERBOSE
only take
effect for subsequent socket bind/connects.
DESCRIPTION
-----------
...
...
@@ -421,14 +421,14 @@ Default value:: 0
Applicable socket types:: ZMQ_ROUTER
ZMQ_PROBE: bootstrap connections to ROUTER sockets
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ZMQ_PROBE
_ROUTER
: bootstrap connections to ROUTER sockets
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~
When set to 1, the socket will automatically send an empty message when a
new connection is made or accepted. You may set this on REQ, DEALER, or
ROUTER sockets connected to a ROUTER socket. The application must filter
such empty messages. The ZMQ_PROBE
option in effect provides the ROUTER
application with an event signaling the arrival of a new peer.
such empty messages. The ZMQ_PROBE
_ROUTER option in effect provides the
ROUTER
application with an event signaling the arrival of a new peer.
NOTE: do not set this option on a socket that talks to any other socket
types: the results are undefined.
...
...
@@ -437,7 +437,7 @@ types: the results are undefined.
Option value type:: int
Option value unit:: 0, 1
Default value:: 0
Applicable socket types:: ZMQ_ROUTER, ZMQ_DEALER, ZMQ_RE
P, ZMQ_RE
Q
Applicable socket types:: ZMQ_ROUTER, ZMQ_DEALER, ZMQ_REQ
ZMQ_XPUB_VERBOSE: provide all subscription messages on XPUB sockets
...
...
include/zmq.h
View file @
a9679da7
...
...
@@ -274,7 +274,7 @@ ZMQ_EXPORT int zmq_msg_set (zmq_msg_t *msg, int option, int optval);
#define ZMQ_CURVE_SERVER 47
#define ZMQ_CURVE_PUBLICKEY 48
#define ZMQ_CURVE_SERVERKEY 49
#define ZMQ_PROBE 50
#define ZMQ_PROBE
_ROUTER
50
/* Message options */
#define ZMQ_MORE 1
...
...
src/dealer.cpp
View file @
a9679da7
...
...
@@ -23,7 +23,7 @@
zmq
::
dealer_t
::
dealer_t
(
class
ctx_t
*
parent_
,
uint32_t
tid_
,
int
sid_
)
:
socket_base_t
(
parent_
,
tid_
,
sid_
),
probe_
new_peers
(
false
)
probe_
router
(
false
)
{
options
.
type
=
ZMQ_DEALER
;
}
...
...
@@ -39,14 +39,12 @@ void zmq::dealer_t::xattach_pipe (pipe_t *pipe_, bool icanhasall_)
zmq_assert
(
pipe_
);
if
(
probe_new_peers
)
{
int
rc
,
ok
;
if
(
probe_router
)
{
msg_t
probe_msg_
;
rc
=
probe_msg_
.
init
();
int
rc
=
probe_msg_
.
init
();
errno_assert
(
rc
==
0
);
ok
=
pipe_
->
write
(
&
probe_msg_
);
int
ok
=
pipe_
->
write
(
&
probe_msg_
);
zmq_assert
(
ok
);
pipe_
->
flush
();
...
...
@@ -65,9 +63,9 @@ int zmq::dealer_t::xsetsockopt (int option_, const void *optval_,
int
value
=
is_int
?
*
((
int
*
)
optval_
)
:
0
;
switch
(
option_
)
{
case
ZMQ_PROBE
:
case
ZMQ_PROBE
_ROUTER
:
if
(
is_int
&&
value
>=
0
)
{
probe_
new_peers
=
value
;
probe_
router
=
value
;
return
0
;
}
break
;
...
...
src/dealer.hpp
View file @
a9679da7
...
...
@@ -62,8 +62,8 @@ namespace zmq
fq_t
fq
;
lb_t
lb
;
// if true, send an empty message to every connected peer
bool
probe_
new_peers
;
// if true, send an empty message to every connected
router
peer
bool
probe_
router
;
dealer_t
(
const
dealer_t
&
);
const
dealer_t
&
operator
=
(
const
dealer_t
&
);
...
...
src/router.cpp
View file @
a9679da7
...
...
@@ -32,9 +32,9 @@ zmq::router_t::router_t (class ctx_t *parent_, uint32_t tid_, int sid_) :
current_out
(
NULL
),
more_out
(
false
),
next_peer_id
(
generate_random
()),
mandatory
(
false
),
raw_sock
(
false
),
probe_
new_peers
(
false
)
mandatory
(
false
),
raw_sock
(
false
),
probe_
router
(
false
)
{
options
.
type
=
ZMQ_ROUTER
;
options
.
recv_identity
=
true
;
...
...
@@ -91,9 +91,9 @@ int zmq::router_t::xsetsockopt (int option_, const void *optval_,
}
break
;
case
ZMQ_PROBE
:
case
ZMQ_PROBE
_ROUTER
:
if
(
is_int
&&
value
>=
0
)
{
probe_
new_peers
=
value
;
probe_
router
=
value
;
return
0
;
}
break
;
...
...
@@ -391,11 +391,9 @@ bool zmq::router_t::identify_peer (pipe_t *pipe_)
ok
=
outpipes
.
insert
(
outpipes_t
::
value_type
(
identity
,
outpipe
)).
second
;
zmq_assert
(
ok
);
if
(
probe_new_peers
)
{
int
rc
;
if
(
probe_router
)
{
msg_t
probe_msg_
;
rc
=
probe_msg_
.
init
();
int
rc
=
probe_msg_
.
init
();
errno_assert
(
rc
==
0
);
ok
=
pipe_
->
write
(
&
probe_msg_
);
...
...
src/router.hpp
View file @
a9679da7
...
...
@@ -112,8 +112,8 @@ namespace zmq
bool
mandatory
;
bool
raw_sock
;
// if true, send an empty message to every connected
peer to solve 'who will write first?' auto discovery problem
bool
probe_
new_peers
;
// if true, send an empty message to every connected
router peer
bool
probe_
router
;
router_t
(
const
router_t
&
);
const
router_t
&
operator
=
(
const
router_t
&
);
...
...
tests/Makefile.am
View file @
a9679da7
...
...
@@ -18,7 +18,7 @@ noinst_PROGRAMS = test_pair_inproc \
test_term_endpoint
\
test_monitor
\
test_router_mandatory
\
test_
router_probe
\
test_
probe_router
\
test_raw_sock
\
test_disconnect_inproc
\
test_ctx_options
\
...
...
@@ -47,7 +47,7 @@ test_last_endpoint_SOURCES = test_last_endpoint.cpp
test_term_endpoint_SOURCES
=
test_term_endpoint.cpp
test_monitor_SOURCES
=
test_monitor.cpp
test_router_mandatory_SOURCES
=
test_router_mandatory.cpp
test_
router_probe_SOURCES
=
test_router_probe
.cpp
test_
probe_router_SOURCES
=
test_probe_router
.cpp
test_raw_sock_SOURCES
=
test_raw_sock.cpp
test_disconnect_inproc_SOURCES
=
test_disconnect_inproc.cpp
test_ctx_options_SOURCES
=
test_ctx_options.cpp
...
...
tests/test_
router_probe
.cpp
→
tests/test_
probe_router
.cpp
View file @
a9679da7
...
...
@@ -36,11 +36,13 @@ int main (void)
// Create client and connect to server, doing a probe
void
*
client
=
zmq_socket
(
ctx
,
ZMQ_DEALER
);
// Trying this results in the first recv waiting forever
// void *client = zmq_socket (ctx, ZMQ_ROUTER);
assert
(
client
);
rc
=
zmq_setsockopt
(
client
,
ZMQ_IDENTITY
,
"X"
,
1
);
assert
(
rc
==
0
);
int
probe
=
1
;
rc
=
zmq_setsockopt
(
client
,
ZMQ_PROBE
,
&
probe
,
sizeof
(
probe
));
rc
=
zmq_setsockopt
(
client
,
ZMQ_PROBE
_ROUTER
,
&
probe
,
sizeof
(
probe
));
assert
(
rc
==
0
);
rc
=
zmq_connect
(
client
,
"tcp://localhost:5560"
);
assert
(
rc
==
0
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment