34 typedef unsigned char byte;
43 #define ZMTP_DEALER 5 // Socket type constants 49 greeting = { { 0xFF, 0, 0, 0, 0, 0, 0, 0, 1, 0x7F },
51 {
'N',
'U',
'L',
'L'},
75 rc =
zmq_bind (stream,
"tcp://127.0.0.1:5556");
86 rc =
zmq_send (dealer,
"Hello", 5, 0);
99 char const *peer_address =
zmq_msg_gets (&identity,
"Peer-Address");
100 assert (peer_address != 0);
101 assert (
streq (peer_address,
"127.0.0.1"));
105 rc =
zmq_recv (stream, buffer, 255, 0);
109 peer_address =
zmq_msg_gets (&identity,
"Peer-Address");
110 assert (peer_address != 0);
111 assert (
streq (peer_address,
"127.0.0.1"));
120 peer_address =
zmq_msg_gets (&identity,
"Peer-Address");
121 assert (peer_address != 0);
122 assert (
streq (peer_address,
"127.0.0.1"));
125 rc =
zmq_recv (stream, buffer, 255, 0);
138 while (bytes_read < 97) {
144 rc =
zmq_recv (stream, buffer + bytes_read, 255 - bytes_read, 0);
150 assert (buffer [0] == 3);
151 assert (buffer [1] == 0);
154 assert (memcmp (buffer + 2,
"NULL\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 20) == 0);
155 assert (memcmp (buffer + 54,
"\4\51\5READY", 8) == 0);
156 assert (memcmp (buffer + 62,
"\13Socket-Type\0\0\0\6DEALER", 22) == 0);
157 assert (memcmp (buffer + 84,
"\10Identity\0\0\0\0", 13) == 0);
160 memcpy (buffer,
"\4\51\5READY", 8);
161 memcpy (buffer + 8,
"\13Socket-Type\0\0\0\6ROUTER", 22);
162 memcpy (buffer + 30,
"\10Identity\0\0\0\0", 13);
167 rc =
zmq_send (stream, buffer, 43, 0);
177 rc =
zmq_recv (stream, buffer,
sizeof buffer, 0);
181 assert (buffer [0] == 0);
182 assert (buffer [1] == 5);
183 assert (memcmp (buffer + 2,
"Hello", 5) == 0);
188 byte world [] = { 0, 5,
'W',
'o',
'r',
'l',
'd' };
189 rc =
zmq_send (stream, world,
sizeof (world), 0);
190 assert (rc ==
sizeof (world));
193 rc =
zmq_recv (dealer, buffer, 255, 0);
195 assert (memcmp (buffer,
"World", 5) == 0);
199 uint8_t msgout [
size];
200 memset (msgout, 0xAB,
size);
203 uint8_t msgin [9 +
size];
204 memset (msgin, 0, 9 +
size);
206 while (bytes_read < 9 +
size) {
208 rc =
zmq_recv (stream, buffer, 256, 0);
211 rc =
zmq_recv (stream, msgin + bytes_read, 9 +
size - bytes_read, 0);
216 for (byte_nbr = 0; byte_nbr <
size; byte_nbr++) {
217 if (msgin [9 + byte_nbr] != 0xAB)
244 rc =
zmq_bind (server,
"tcp://127.0.0.1:9070");
254 size_t id_size = 256;
255 uint8_t buffer [256];
259 id_size =
zmq_recv (server,
id, 256, 0);
260 assert (id_size > 0);
261 rc =
zmq_recv (server, buffer, 256, 0);
264 id_size =
zmq_recv (client,
id, 256, 0);
265 assert (id_size > 0);
266 rc =
zmq_recv (client, buffer, 256, 0);
275 assert (rc == (
int) id_size);
277 rc =
zmq_send (client,
"GET /\n\n", 7, 0);
281 id_size =
zmq_recv (server,
id, 256, 0);
282 assert (id_size > 0);
283 rc =
zmq_recv (server, buffer, 256, 0);
285 assert (memcmp (buffer,
"GET /\n\n", 7) == 0);
288 char http_response [] =
289 "HTTP/1.0 200 OK\r\n" 290 "Content-Type: text/plain\r\n" 305 id_size =
zmq_recv (client,
id, 256, 0);
306 assert (id_size > 0);
307 rc =
zmq_recv (client, buffer, 256, 0);
308 assert (rc ==
sizeof (http_response));
309 assert (memcmp (buffer, http_response,
sizeof (http_response)) == 0);
ZMQ_EXPORT int zmq_setsockopt(void *s, int option, const void *optval, size_t optvallen)
ZMQ_EXPORT void * zmq_ctx_new(void)
static void test_stream_to_stream(void)
void setup_test_environment(void)
ZMQ_EXPORT int zmq_recv(void *s, void *buf, size_t len, int flags)
#define ZMQ_STREAM_NOTIFY
static void test_stream_to_dealer(void)
ZMQ_EXPORT void * zmq_socket(void *, int type)
ZMQ_EXPORT int zmq_getsockopt(void *s, int option, void *optval, size_t *optvallen)
ZMQ_EXPORT int zmq_msg_send(zmq_msg_t *msg, void *s, int flags)
ZMQ_EXPORT int zmq_connect(void *s, const char *addr)
ZMQ_EXPORT int zmq_close(void *s)
static zmtp_greeting_t greeting
ZMQ_EXPORT int zmq_msg_recv(zmq_msg_t *msg, void *s, int flags)
ZMQ_EXPORT int zmq_msg_more(zmq_msg_t *msg)
ZMQ_EXPORT const char * zmq_msg_gets(zmq_msg_t *msg, const char *property)
ZMQ_EXPORT int zmq_send(void *s, const void *buf, size_t len, int flags)
ZMQ_EXPORT int zmq_bind(void *s, const char *addr)
ZMQ_EXPORT int zmq_ctx_term(void *context)
ZMQ_EXPORT int zmq_msg_init(zmq_msg_t *msg)