diff options
| author | Martin Sustrik <sustrik@fastmq.commkdir> | 2009-09-21 14:39:59 +0200 | 
|---|---|---|
| committer | Martin Sustrik <sustrik@fastmq.commkdir> | 2009-09-21 14:39:59 +0200 | 
| commit | cb1b6fe32cbf3c7cf5961bb4156f2de743693a3a (patch) | |
| tree | fad2a866ccb543fd4676c4539c68fb32c52dc3a3 /src/session.cpp | |
| parent | 7668b246fc3cf4a2a3b3ee9b1283ad8a4b12ac4f (diff) | |
initial version of req/rep sockets
Diffstat (limited to 'src/session.cpp')
| -rw-r--r-- | src/session.cpp | 49 | 
1 files changed, 26 insertions, 23 deletions
| diff --git a/src/session.cpp b/src/session.cpp index d455462..b829ae9 100644 --- a/src/session.cpp +++ b/src/session.cpp @@ -46,11 +46,7 @@ bool zmq::session_t::read (::zmq_msg_t *msg_)      if (!active)          return false; -    bool fetched = in_pipe->read (msg_); -    if (!fetched) -        active = false; - -    return fetched; +    return in_pipe->read (msg_);  }  bool zmq::session_t::write (::zmq_msg_t *msg_) @@ -84,38 +80,45 @@ void zmq::session_t::detach ()          term ();  } -void zmq::session_t::attach_inpipe (reader_t *pipe_) +void zmq::session_t::attach_pipes (class reader_t *inpipe_, +    class writer_t *outpipe_)  { -    zmq_assert (!in_pipe); -    in_pipe = pipe_; -    active = true; -    in_pipe->set_endpoint (this); +    if (inpipe_) { +        zmq_assert (!in_pipe); +        in_pipe = inpipe_; +        active = true; +        in_pipe->set_endpoint (this); +    } + +    if (outpipe_) { +        zmq_assert (!out_pipe); +        out_pipe = outpipe_; +        out_pipe->set_endpoint (this); +    }  } -void zmq::session_t::attach_outpipe (writer_t *pipe_) +void zmq::session_t::detach_inpipe (reader_t *pipe_)  { -    zmq_assert (!out_pipe); -    out_pipe = pipe_; -    out_pipe->set_endpoint (this); +    active = false; +    in_pipe = NULL;  } -void zmq::session_t::revive (reader_t *pipe_) +void zmq::session_t::detach_outpipe (writer_t *pipe_)  { -    zmq_assert (in_pipe == pipe_); -    active = true; -    if (engine) -        engine->revive (); +    out_pipe = NULL;  } -void zmq::session_t::detach_inpipe (reader_t *pipe_) +void zmq::session_t::kill (reader_t *pipe_)  {      active = false; -    in_pipe = NULL;  } -void zmq::session_t::detach_outpipe (writer_t *pipe_) +void zmq::session_t::revive (reader_t *pipe_)  { -    out_pipe = NULL; +    zmq_assert (in_pipe == pipe_); +    active = true; +    if (engine) +        engine->revive ();  }  void zmq::session_t::process_plug () | 
