summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/named_session.cpp57
-rw-r--r--src/named_session.hpp5
2 files changed, 18 insertions, 44 deletions
diff --git a/src/named_session.cpp b/src/named_session.cpp
index 2532c5a..7e2c49e 100644
--- a/src/named_session.cpp
+++ b/src/named_session.cpp
@@ -23,63 +23,38 @@
zmq::named_session_t::named_session_t (class io_thread_t *io_thread_,
socket_base_t *socket_, const options_t &options_,
- const blob_t &name_) :
+ const blob_t &peer_identity_) :
session_t (io_thread_, socket_, options_),
- name (name_)
+ peer_identity (peer_identity_)
{
- // Make double sure that the session has valid name.
- zmq_assert (!name.empty ());
- zmq_assert (name [0] != 0);
+ // Make double sure that the peer's identity is not transient.
+ zmq_assert (!peer_identity.empty ());
+ zmq_assert (peer_identity [0] != 0);
- if (!socket_->register_session (name, this)) {
+ bool ok = socket_->register_session (peer_identity, this);
- // TODO: There's already a session with the specified
- // identity. We should log the error and drop the
- // session.
- zmq_assert (false);
- }
+ // If new session is being created, the caller should have already
+ // checked that the session for specified identity doesn't exist yet.
+ // Thus, register_session should not fail.
+ zmq_assert (ok);
}
zmq::named_session_t::~named_session_t ()
{
// Unregister the session from the global list of named sessions.
- if (!name.empty ())
- unregister_session (name);
+ unregister_session (peer_identity);
}
void zmq::named_session_t::attached (const blob_t &peer_identity_)
{
- if (!name.empty ()) {
-
- // If both IDs are temporary, no checking is needed.
- // TODO: Old ID should be reused in this case...
- if (name.empty () || name [0] != 0 ||
- peer_identity_.empty () || peer_identity_ [0] != 0) {
-
- // If we already know the peer name do nothing, just check whether
- // it haven't changed.
- zmq_assert (name == peer_identity_);
- }
- }
- else if (!peer_identity_.empty ()) {
-
- // Store the peer identity.
- name = peer_identity_;
-
- // Register the session using the peer name.
- if (!register_session (name, this)) {
-
- // TODO: There's already a session with the specified
- // identity. We should presumably syslog it and drop the
- // session.
- zmq_assert (false);
- }
- }
+ // The owner should take care to not attach the session
+ // to an unrelated peer.
+ zmq_assert (peer_identity == peer_identity_);
}
void zmq::named_session_t::detached ()
{
- // Do nothing. Named sessions are never destroyed because of disconnection,
- // neither they have to actively reconnect.
+ // Do nothing. Named sessions are never destroyed because of disconnection.
+ // Neither they have to actively reconnect.
}
diff --git a/src/named_session.hpp b/src/named_session.hpp
index cf31209..fac4745 100644
--- a/src/named_session.hpp
+++ b/src/named_session.hpp
@@ -36,7 +36,7 @@ namespace zmq
named_session_t (class io_thread_t *io_thread_,
class socket_base_t *socket_, const options_t &options_,
- const blob_t &name_);
+ const blob_t &peer_identity_);
~named_session_t ();
// Handlers for events from session base class.
@@ -45,8 +45,7 @@ namespace zmq
private:
- // Name of the session. Corresponds to the peer's strong identity.
- blob_t name;
+ blob_t peer_identity;
named_session_t (const named_session_t&);
const named_session_t &operator = (const named_session_t&);