Multi-hop REQ/REP, part VII., identity-related algorithms rewritten

This commit is contained in:
Martin Sustrik
2010-02-13 13:07:33 +01:00
parent 923eacd28a
commit cdc2efe9b5
5 changed files with 94 additions and 70 deletions

View File

@@ -267,7 +267,7 @@ int zmq::socket_base_t::connect (const char *addr_)
return -1;
}
send_attach (session, pgm_sender);
send_attach (session, pgm_sender, 0, NULL);
}
else if (options.requires_in) {
@@ -282,7 +282,7 @@ int zmq::socket_base_t::connect (const char *addr_)
return -1;
}
send_attach (session, pgm_receiver);
send_attach (session, pgm_receiver, 0, NULL);
}
else
zmq_assert (false);
@@ -454,30 +454,33 @@ bool zmq::socket_base_t::has_out ()
return xhas_out ();
}
bool zmq::socket_base_t::register_session (const char *name_,
session_t *session_)
bool zmq::socket_base_t::register_session (unsigned char peer_identity_size_,
unsigned char *peer_identity_, session_t *session_)
{
sessions_sync.lock ();
bool registered =
named_sessions.insert (std::make_pair (name_, session_)).second;
bool registered = named_sessions.insert (std::make_pair (std::string (
(char*) peer_identity_, peer_identity_size_), session_)).second;
sessions_sync.unlock ();
return registered;
}
void zmq::socket_base_t::unregister_session (const char *name_)
void zmq::socket_base_t::unregister_session (unsigned char peer_identity_size_,
unsigned char *peer_identity_)
{
sessions_sync.lock ();
named_sessions_t::iterator it = named_sessions.find (name_);
named_sessions_t::iterator it = named_sessions.find (std::string (
(char*) peer_identity_, peer_identity_size_));
zmq_assert (it != named_sessions.end ());
named_sessions.erase (it);
sessions_sync.unlock ();
}
zmq::session_t *zmq::socket_base_t::find_session (const char *name_)
zmq::session_t *zmq::socket_base_t::find_session (
unsigned char peer_identity_size_, unsigned char *peer_identity_)
{
sessions_sync.lock ();
named_sessions_t::iterator it = named_sessions.find (name_);
named_sessions_t::iterator it = named_sessions.find (std::string (
(char*) peer_identity_, peer_identity_size_));
if (it == named_sessions.end ()) {
sessions_sync.unlock ();
return NULL;