summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMartin Lucina <martin@lucina.net>2012-05-20 07:40:11 +0200
committerMartin Sustrik <sustrik@250bpm.com>2012-05-25 14:02:16 +0200
commita34ea4d80609395150742259fd8c9caa4409e961 (patch)
treeaa5c1793e7e5e276e4ded626adbe042e75740ff6 /tests
parent6b7089891bdb3a4c55b43d0854787c96fae3bf2b (diff)
Implement SP wire protocol
Implements the SP wire protocol, and infrastructure for legacy wire protocol support. Also added an XS_SERVICE_ID socket option to set the service id and renamed the XS_PROTOCOL option to XS_PATTERN_VERSION. The following pattern versions are supported: PAIR: v3 PUBSUB: v1 (legacy), v4 REQREP: v2 PIPELINE: v3 SURVEY: v2 Note that all existing pattern versions have been bumped by 1 to allow for use of legacy protocols (otherwise there would be no way to distinguish between e.g. PUBSUB v3 and PUBSUB v3 using SP). Signed-off-by: Martin Lucina <martin@lucina.net>
Diffstat (limited to 'tests')
-rw-r--r--tests/libzmq21.cpp10
-rw-r--r--tests/wireformat.cpp19
2 files changed, 19 insertions, 10 deletions
diff --git a/tests/libzmq21.cpp b/tests/libzmq21.cpp
index ecf271b..3323ef0 100644
--- a/tests/libzmq21.cpp
+++ b/tests/libzmq21.cpp
@@ -53,8 +53,9 @@ int XS_TEST_MAIN ()
assert (ctx);
void *pub = xs_socket (ctx, XS_PUB);
assert (pub);
- int protocol = 1;
- int rc = xs_setsockopt (pub, XS_PROTOCOL, &protocol, sizeof (protocol));
+ int pattern_version = 1;
+ int rc = xs_setsockopt (pub, XS_PATTERN_VERSION, &pattern_version,
+ sizeof (pattern_version));
assert (rc == 0);
rc = xs_bind (pub, "tcp://127.0.0.1:5560");
assert (rc != -1);
@@ -99,8 +100,9 @@ int XS_TEST_MAIN ()
assert (ctx);
void *sub = xs_socket (ctx, XS_SUB);
assert (sub);
- protocol = 1;
- rc = xs_setsockopt (sub, XS_PROTOCOL, &protocol, sizeof (protocol));
+ pattern_version = 1;
+ rc = xs_setsockopt (sub, XS_PATTERN_VERSION, &pattern_version,
+ sizeof (pattern_version));
assert (rc == 0);
rc = xs_setsockopt (sub, XS_SUBSCRIBE, "", 0);
assert (rc == 0);
diff --git a/tests/wireformat.cpp b/tests/wireformat.cpp
index f3e0f96..f12f5aa 100644
--- a/tests/wireformat.cpp
+++ b/tests/wireformat.cpp
@@ -49,7 +49,11 @@ int XS_TEST_MAIN ()
assert (push);
// Bind the peer and get the message.
- int rc = xs_bind (pull, "tcp://127.0.0.1:5560");
+ int service_id = 0x1234;
+ int rc = xs_setsockopt (pull, XS_SERVICE_ID, &service_id,
+ sizeof service_id);
+ assert (rc == 0);
+ rc = xs_bind (pull, "tcp://127.0.0.1:5560");
assert (rc != -1);
rc = xs_bind (push, "tcp://127.0.0.1:5561");
assert (rc != -1);
@@ -71,10 +75,10 @@ int XS_TEST_MAIN ()
assert (rc == 0);
// Let's send some data and check if it arrived
- rc = send (rpush, "\x04\0abc", 5, 0);
- assert (rc == 5);
+ rc = send (rpush, "\0SP\0\x12\x34\x04\x31\x04\0abc", 13, 0);
+ assert (rc == 13);
unsigned char buf [3];
- unsigned char buf2 [3];
+ unsigned char buf2 [8];
rc = xs_recv (pull, buf, sizeof (buf), 0);
assert (rc == 3);
assert (!memcmp (buf, "abc", 3));
@@ -83,8 +87,11 @@ int XS_TEST_MAIN ()
rc = xs_send (push, buf, sizeof (buf), 0);
assert (rc == 3);
rc = recv (rpull, (char*) buf2, sizeof (buf2), 0);
- assert (rc == 3);
- assert (!memcmp (buf2, "\x04\0abc", 3));
+ assert (rc == 8);
+ assert (!memcmp (buf2, "\0SP\0\0\0\x04\x31", 8));
+ rc = recv (rpull, (char*) buf2, 5, 0);
+ assert (rc == 5);
+ assert (!memcmp (buf2, "\x04\0abc", 5));
#if defined XS_HAVE_WINDOWS
rc = closesocket (rpush);