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
2c94bb42
Commit
2c94bb42
authored
Sep 13, 2015
by
Constantin Rack
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1578 from hintjens/master
Problem: drop tests on CLIENT/SERVER are misleading
parents
fb57110b
3f925501
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
15 additions
and
240 deletions
+15
-240
Makefile.am
Makefile.am
+0
-8
zmq_getsockopt.txt
doc/zmq_getsockopt.txt
+2
-2
zmq_socket.txt
doc/zmq_socket.txt
+13
-2
test_client_drop_more.cpp
tests/test_client_drop_more.cpp
+0
-114
test_server_drop_more.cpp
tests/test_server_drop_more.cpp
+0
-114
No files found.
Makefile.am
View file @
2c94bb42
...
...
@@ -361,8 +361,6 @@ test_apps = \
tests/test_xpub_welcome_msg
\
tests/test_atomics
\
tests/test_client_server
\
tests/test_server_drop_more
\
tests/test_client_drop_more
\
tests/test_thread_safe
\
tests/test_socketopt_hwm
\
tests/test_heartbeats
\
...
...
@@ -560,12 +558,6 @@ tests_test_atomics_LDADD = src/libzmq.la
tests_test_client_server_SOURCES
=
tests/test_client_server.cpp
tests_test_client_server_LDADD
=
src/libzmq.la
tests_test_server_drop_more_SOURCES
=
tests/test_server_drop_more.cpp
tests_test_server_drop_more_LDADD
=
src/libzmq.la
tests_test_client_drop_more_SOURCES
=
tests/test_client_drop_more.cpp
tests_test_client_drop_more_LDADD
=
src/libzmq.la
tests_test_thread_safe_SOURCES
=
tests/test_thread_safe.cpp
tests_test_thread_safe_LDADD
=
src/libzmq.la
...
...
doc/zmq_getsockopt.txt
View file @
2c94bb42
...
...
@@ -691,8 +691,8 @@ Applicable socket types:: all, when using TCP transports.
ZMQ_THREADSAFE: Retrieve socket thread safety
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_THREADSAFE' option shall retrieve a boolean value indicating whether
or not the socket is threadsafe. Currently
only 'ZMQ_CLIENT' sockets are
threadsafe.
or not the socket is threadsafe. Currently
'ZMQ_CLIENT' and 'ZMQ_SERVER' sockets
are
threadsafe.
[horizontal]
Option value type:: boolean
...
...
doc/zmq_socket.txt
View file @
2c94bb42
...
...
@@ -65,8 +65,9 @@ after which either peer can send messages asynchronously, to the other.
The client-server pattern is formally defined by http://rfc.zeromq.org/spec:41.
Note: this pattern deprecates the use of 'ZMQ_DEALER' and 'ZMQ_ROUTER' to build
client-server architectures.
Note: this pattern is meant to eventually deprecate the use of 'ZMQ_DEALER' and
'ZMQ_ROUTER' to build client-server architectures, as well as 'ZMQ_REP' and
'ZMQ_REQ' for request-reply.
ZMQ_CLIENT
^^^^^^^^^^
...
...
@@ -92,6 +93,11 @@ the first client thread that calls libzmq:zmq_msg_recv. If you need to get
replies back to the originating thread, use one 'ZMQ_CLIENT' socket per
thread.
NOTE: 'ZMQ_CLIENT' sockets are threadsafe. They do not accept the ZMQ_SNDMORE
option on sends not ZMQ_RCVMORE on receives. This limits them to single part
data. The intention is to extend the API to allow scatter/gather of multi-part
data.
[horizontal]
.Summary of ZMQ_CLIENT characteristics
Compatible peer sockets:: 'ZMQ_SERVER'
...
...
@@ -118,6 +124,11 @@ peer, the send call will fail with EHOSTUNREACH. If the outgoing buffer for
the client peer is full, the send call will fail with EAGAIN. The 'ZMQ_SERVER'
socket shall not drop messages, nor shall it block.
NOTE: 'ZMQ_SERVER' sockets are threadsafe. They do not accept the ZMQ_SNDMORE
option on sends not ZMQ_RCVMORE on receives. This limits them to single part
data. The intention is to extend the API to allow scatter/gather of multi-part
data.
[horizontal]
.Summary of ZMQ_SERVER characteristics
Compatible peer sockets:: 'ZMQ_CLIENT'
...
...
tests/test_client_drop_more.cpp
deleted
100644 → 0
View file @
fb57110b
/*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of libzmq, the ZeroMQ core engine in C++.
libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License (LGPL) as published
by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
As a special exception, the Contributors give you permission to link
this library with independent modules to produce an executable,
regardless of the license terms of these independent modules, and to
copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "testutil.hpp"
int
send_msg
(
zmq_msg_t
*
msg
,
void
*
s
,
int
flags
,
int
value
);
int
main
(
void
)
{
setup_test_environment
();
void
*
ctx
=
zmq_ctx_new
();
assert
(
ctx
);
void
*
client
=
zmq_socket
(
ctx
,
ZMQ_CLIENT
);
void
*
server
=
zmq_socket
(
ctx
,
ZMQ_SERVER
);
int
rc
;
rc
=
zmq_bind
(
client
,
"inproc://serverdropmore"
);
assert
(
rc
==
0
);
rc
=
zmq_connect
(
server
,
"inproc://serverdropmore"
);
assert
(
rc
==
0
);
zmq_msg_t
msg
;
rc
=
zmq_msg_init
(
&
msg
);
assert
(
rc
==
0
);
// we will send 2 3-frames messages and then single frame message, only last one should be received
rc
=
send_msg
(
&
msg
,
client
,
ZMQ_SNDMORE
,
1
);
assert
(
rc
==
1
);
rc
=
send_msg
(
&
msg
,
client
,
ZMQ_SNDMORE
,
2
);
assert
(
rc
==
1
);
rc
=
send_msg
(
&
msg
,
client
,
0
,
3
);
assert
(
rc
==
1
);
rc
=
send_msg
(
&
msg
,
client
,
ZMQ_SNDMORE
,
4
);
assert
(
rc
==
1
);
rc
=
send_msg
(
&
msg
,
client
,
ZMQ_SNDMORE
,
5
);
assert
(
rc
==
1
);
rc
=
send_msg
(
&
msg
,
client
,
0
,
6
);
assert
(
rc
==
1
);
rc
=
send_msg
(
&
msg
,
client
,
0
,
7
);
assert
(
rc
==
1
);
rc
=
zmq_msg_recv
(
&
msg
,
server
,
0
);
assert
(
rc
==
1
);
assert
(
zmq_msg_more
(
&
msg
)
==
0
);
unsigned
char
*
data
=
(
unsigned
char
*
)
zmq_msg_data
(
&
msg
);
assert
(
data
[
0
]
==
7
);
rc
=
zmq_msg_close
(
&
msg
);
assert
(
rc
==
0
);
rc
=
zmq_close
(
client
);
assert
(
rc
==
0
);
rc
=
zmq_close
(
server
);
assert
(
rc
==
0
);
rc
=
zmq_ctx_term
(
ctx
);
assert
(
rc
==
0
);
return
0
;
}
int
send_msg
(
zmq_msg_t
*
msg
,
void
*
s
,
int
flags
,
int
value
)
{
int
rc
=
zmq_msg_close
(
msg
);
if
(
rc
!=
0
)
return
rc
;
zmq_msg_init_size
(
msg
,
1
);
if
(
rc
!=
0
)
return
rc
;
unsigned
char
*
data
=
(
unsigned
char
*
)
zmq_msg_data
(
msg
);
data
[
0
]
=
(
unsigned
char
)
value
;
return
zmq_msg_send
(
msg
,
s
,
flags
);
}
tests/test_server_drop_more.cpp
deleted
100644 → 0
View file @
fb57110b
/*
Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of libzmq, the ZeroMQ core engine in C++.
libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License (LGPL) as published
by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
As a special exception, the Contributors give you permission to link
this library with independent modules to produce an executable,
regardless of the license terms of these independent modules, and to
copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "testutil.hpp"
int
send_msg
(
zmq_msg_t
*
msg
,
void
*
s
,
int
flags
,
int
value
);
int
main
(
void
)
{
setup_test_environment
();
void
*
ctx
=
zmq_ctx_new
();
assert
(
ctx
);
void
*
server
=
zmq_socket
(
ctx
,
ZMQ_SERVER
);
void
*
client
=
zmq_socket
(
ctx
,
ZMQ_CLIENT
);
int
rc
;
rc
=
zmq_bind
(
server
,
"inproc://serverdropmore"
);
assert
(
rc
==
0
);
rc
=
zmq_connect
(
client
,
"inproc://serverdropmore"
);
assert
(
rc
==
0
);
zmq_msg_t
msg
;
rc
=
zmq_msg_init
(
&
msg
);
assert
(
rc
==
0
);
// we will send 2 3-frames messages and then single frame message, only last one should be received
rc
=
send_msg
(
&
msg
,
client
,
ZMQ_SNDMORE
,
1
);
assert
(
rc
==
1
);
rc
=
send_msg
(
&
msg
,
client
,
ZMQ_SNDMORE
,
2
);
assert
(
rc
==
1
);
rc
=
send_msg
(
&
msg
,
client
,
0
,
3
);
assert
(
rc
==
1
);
rc
=
send_msg
(
&
msg
,
client
,
ZMQ_SNDMORE
,
4
);
assert
(
rc
==
1
);
rc
=
send_msg
(
&
msg
,
client
,
ZMQ_SNDMORE
,
5
);
assert
(
rc
==
1
);
rc
=
send_msg
(
&
msg
,
client
,
0
,
6
);
assert
(
rc
==
1
);
rc
=
send_msg
(
&
msg
,
client
,
0
,
7
);
assert
(
rc
==
1
);
rc
=
zmq_msg_recv
(
&
msg
,
server
,
0
);
assert
(
rc
==
1
);
assert
(
zmq_msg_more
(
&
msg
)
==
0
);
unsigned
char
*
data
=
(
unsigned
char
*
)
zmq_msg_data
(
&
msg
);
assert
(
data
[
0
]
==
7
);
rc
=
zmq_msg_close
(
&
msg
);
assert
(
rc
==
0
);
rc
=
zmq_close
(
server
);
assert
(
rc
==
0
);
rc
=
zmq_close
(
client
);
assert
(
rc
==
0
);
rc
=
zmq_ctx_term
(
ctx
);
assert
(
rc
==
0
);
return
0
;
}
int
send_msg
(
zmq_msg_t
*
msg
,
void
*
s
,
int
flags
,
int
value
)
{
int
rc
=
zmq_msg_close
(
msg
);
if
(
rc
!=
0
)
return
rc
;
zmq_msg_init_size
(
msg
,
1
);
if
(
rc
!=
0
)
return
rc
;
unsigned
char
*
data
=
(
unsigned
char
*
)
zmq_msg_data
(
msg
);
data
[
0
]
=
(
unsigned
char
)
value
;
return
zmq_msg_send
(
msg
,
s
,
flags
);
}
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