diff options
Diffstat (limited to 'src/lb.hpp')
| -rw-r--r-- | src/lb.hpp | 24 | 
1 files changed, 17 insertions, 7 deletions
| @@ -20,30 +20,34 @@  #ifndef __ZMQ_LB_HPP_INCLUDED__  #define __ZMQ_LB_HPP_INCLUDED__ -#include "yarray.hpp" +#include "array.hpp" +#include "pipe.hpp"  namespace zmq  {      //  Class manages a set of outbound pipes. On send it load balances      //  messages fairly among the pipes. -    class lb_t +    class lb_t : public i_writer_events      {      public: -        lb_t (); +        lb_t (class own_t *sink_);          ~lb_t (); -        void attach (class writer_t *pipe_); -        void detach (class writer_t *pipe_); -        void revive (class writer_t *pipe_); +        void attach (writer_t *pipe_); +        void terminate ();          int send (zmq_msg_t *msg_, int flags_);          bool has_out (); +        //  i_writer_events interface implementation. +        void activated (writer_t *pipe_); +        void terminated (writer_t *pipe_); +      private:          //  List of outbound pipes. -        typedef yarray_t <class writer_t> pipes_t; +        typedef array_t <class writer_t> pipes_t;          pipes_t pipes;          //  Number of active pipes. All the active pipes are located at the @@ -56,6 +60,12 @@ namespace zmq          //  True if last we are in the middle of a multipart message.          bool more; +        //  Object to send events to. +        class own_t *sink; + +        //  If true, termination process is already underway. +        bool terminating; +          lb_t (const lb_t&);          void operator = (const lb_t&);      }; | 
