summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2017-01-02 14:37:42 -0800
committerGarrett D'Amore <garrett@damore.org>2017-01-02 14:37:42 -0800
commitec2b1275153487fda661942d9b98aab2567b612e (patch)
tree4e1457b1bbf57341ea569013892550a988457e09 /src
parentb6374f9d9b07c929522066f27ed9a7a05c6bb23b (diff)
downloadnng-ec2b1275153487fda661942d9b98aab2567b612e.tar.gz
nng-ec2b1275153487fda661942d9b98aab2567b612e.tar.bz2
nng-ec2b1275153487fda661942d9b98aab2567b612e.zip
Begin testing REQ/REP.
Diffstat (limited to 'src')
-rw-r--r--src/core/protocol.c4
-rw-r--r--src/core/socket.c7
-rw-r--r--src/nng.c8
-rw-r--r--src/nng.h3
-rw-r--r--src/protocol/reqrep/rep.c3
-rw-r--r--src/protocol/reqrep/req.c3
6 files changed, 26 insertions, 2 deletions
diff --git a/src/core/protocol.c b/src/core/protocol.c
index 8669275a..072cc301 100644
--- a/src/core/protocol.c
+++ b/src/core/protocol.c
@@ -17,9 +17,13 @@
// change, as adding new protocols is not something intended to be done
// outside of the core.
extern nni_proto nni_pair_proto;
+extern nni_proto nni_rep_proto;
+extern nni_proto nni_req_proto;
static nni_proto *protocols[] = {
&nni_pair_proto,
+ &nni_rep_proto,
+ &nni_req_proto,
NULL
};
diff --git a/src/core/socket.c b/src/core/socket.c
index cad4b10a..26ca055e 100644
--- a/src/core/socket.c
+++ b/src/core/socket.c
@@ -361,6 +361,13 @@ nni_sock_proto(nni_sock *sock)
}
+uint16_t
+nni_sock_peer(nni_sock *sock)
+{
+ return (sock->s_proto.proto_peer);
+}
+
+
int
nni_sock_dial(nni_sock *sock, const char *addr, nni_ep **epp, int flags)
{
diff --git a/src/nng.c b/src/nng.c
index 3923480d..79069723 100644
--- a/src/nng.c
+++ b/src/nng.c
@@ -57,6 +57,14 @@ nng_protocol(nng_socket *s)
}
+uint16_t
+nng_peer(nng_socket *s)
+{
+ NNI_INIT_VOID();
+ return (nni_sock_peer(s));
+}
+
+
int
nng_recvmsg(nng_socket *s, nng_msg **msgp, int flags)
{
diff --git a/src/nng.h b/src/nng.h
index 9388f202..a0995595 100644
--- a/src/nng.h
+++ b/src/nng.h
@@ -59,6 +59,9 @@ NNG_DECL int nng_close(nng_socket *);
// nng_protocol returns the protocol number of the socket.
uint16_t nng_protocol(nng_socket *);
+// nng_peer returns the protocol number for the socket's peer.
+uint16_t nng_peer(nng_socket *);
+
// nng_setopt sets an option for a specific socket.
NNG_DECL int nng_setopt(nng_socket *, int, const void *, size_t);
diff --git a/src/protocol/reqrep/rep.c b/src/protocol/reqrep/rep.c
index 8d51ee0a..60346390 100644
--- a/src/protocol/reqrep/rep.c
+++ b/src/protocol/reqrep/rep.c
@@ -312,6 +312,7 @@ again:
}
}
nni_msgq_signal(uwq, &rp->sigclose);
+ nni_msgq_signal(rp->sendq, &rp->sigclose);
nni_pipe_close(pipe);
}
@@ -452,7 +453,7 @@ static nni_proto_pipe nni_rep_proto_pipe = {
.pipe_recv = nni_rep_pipe_recv,
};
-nni_proto nni_rep_protocol = {
+nni_proto nni_rep_proto = {
.proto_self = NNG_PROTO_REP,
.proto_peer = NNG_PROTO_REQ,
.proto_name = "rep",
diff --git a/src/protocol/reqrep/req.c b/src/protocol/reqrep/req.c
index c26d66e8..b8401107 100644
--- a/src/protocol/reqrep/req.c
+++ b/src/protocol/reqrep/req.c
@@ -118,6 +118,7 @@ nni_req_pipe_init(void **rpp, nni_pipe *pipe, void *rsock)
rp->pipe = pipe;
rp->sigclose = 0;
rp->req = rsock;
+ *rpp = rp;
return (0);
}
@@ -414,7 +415,7 @@ static nni_proto_pipe nni_req_proto_pipe = {
.pipe_recv = nni_req_pipe_recv,
};
-nni_proto nni_req_protocol = {
+nni_proto nni_req_proto = {
.proto_self = NNG_PROTO_REQ,
.proto_peer = NNG_PROTO_REP,
.proto_name = "req",