diff options
-rw-r--r-- | src/req.cpp | 6 | ||||
-rw-r--r-- | src/req.hpp | 1 | ||||
-rw-r--r-- | src/session_base.hpp | 6 |
3 files changed, 11 insertions, 2 deletions
diff --git a/src/req.cpp b/src/req.cpp index 01b35ea..2e0e614 100644 --- a/src/req.cpp +++ b/src/req.cpp @@ -179,3 +179,9 @@ int xs::req_session_t::write (msg_t *msg_) return -1; } +void xs::req_session_t::detach () +{ + state = options.recv_identity ? identity : bottom; + xreq_session_t::detach (); +} + diff --git a/src/req.hpp b/src/req.hpp index 10e06f2..0434ddd 100644 --- a/src/req.hpp +++ b/src/req.hpp @@ -72,6 +72,7 @@ namespace xs // Overloads of the functions from session_base_t. int write (msg_t *msg_); + void detach (); private: diff --git a/src/session_base.hpp b/src/session_base.hpp index 47da8c2..b22aee1 100644 --- a/src/session_base.hpp +++ b/src/session_base.hpp @@ -54,10 +54,12 @@ namespace xs void attach_pipe (xs::pipe_t *pipe_); // Following functions are the interface exposed towards the engine. + // They can be overloaded by specific session types to intercept + // events coming from the engine. virtual int read (msg_t *msg_); virtual int write (msg_t *msg_); - void flush (); - void detach (); + virtual void flush (); + virtual void detach (); // i_pipe_events interface implementation. void read_activated (xs::pipe_t *pipe_); |