Samuel,
I believe the best way to achieve what you are looking for is nn_poll (
http://nanomsg.org/v1.0.0/nn_poll.3.html). You store your sockets in a way
that you can look up what type they are when nn_poll tells you they are
ready.
I believe the reason a socket cannot have multiple types is because many
(all?) of the types are fundamentally different. For example, a reply
socket could never be paired with a sub socket (because you can never send
on the sub socket).
I hope this helps you!
- James Root
On Sat, Oct 29, 2016 at 8:44 PM, SGSeven Algebraf <a1rex2003@xxxxxxxxx>
wrote:
Being new to nanomsg I am not accustom yet how things work.
A few questions follows:
1) The documentation says that I can call *nn_bind* and *nn_connect*
multiple times on the same socket .
s = nn_socket (AF_SP, NN_PAIR);
eid1 = nn_connect (s, "inproc://test");
eid2 = nn_connect (s, "tcp://127.0.0.1:5560");
Is there a way to know which endpoint sent a message (eid1 or eid2) when I
receive it by:
nn_recv (s, &buf, NN_MSG, 0);
?
2) I guess that I cannot mix different SP protocols on the same socket and
have to setup different threats for every socket type.
It would be potentially beneficial if *nn_receive* could get a message
a) from multiple nanomsg sockets (potentially configured with different
protocols) :
nn_recv_from_sockets (*socketArray,* &buf, NN_MSG, 0);
or
b) from different protocols
I guess what I need for case b) is:
s = nn_socket (AF_SP, *NN_ALL*);
// or
s = nn_socket (AF_SP, *NN_SUB | NN_PAIR*);
or alternatively forcing *nn_receive* to receive from different SP senders
nn_recv (s, &buf, NN_MSG, 0, *NN_ALL)*;
Another way to be able to receive from different SP could be a
nn_recv (s, &buf, NN_MSG, 0, *NN_SUB | NN_PAIR*);
(*nn_sen*d could indicate used protocol by having an extra parameter)
Is there any way or potential benefits to provide the mentioned above
functionalities or am I misguided?
Thank you,
- Samuel