diff options
Diffstat (limited to 'src/fq.hpp')
| -rw-r--r-- | src/fq.hpp | 26 | 
1 files changed, 18 insertions, 8 deletions
| @@ -20,7 +20,8 @@  #ifndef __ZMQ_FQ_HPP_INCLUDED__  #define __ZMQ_FQ_HPP_INCLUDED__ -#include "yarray.hpp" +#include "array.hpp" +#include "pipe.hpp"  namespace zmq  { @@ -28,24 +29,27 @@ namespace zmq      //  Class manages a set of inbound pipes. On receive it performs fair      //  queueing (RFC970) so that senders gone berserk won't cause denial of      //  service for decent senders. -    class fq_t +    class fq_t : public i_reader_events      {      public: -        fq_t (); +        fq_t (struct i_terminate_events *sink_);          ~fq_t (); -        void attach (class reader_t *pipe_); -        void detach (class reader_t *pipe_); -        void kill (class reader_t *pipe_); -        void revive (class reader_t *pipe_); +        void attach (reader_t *pipe_); +        void terminate (); +          int recv (zmq_msg_t *msg_, int flags_);          bool has_in (); +        //  i_reader_events implementation. +        void activated (reader_t *pipe_); +        void terminated (reader_t *pipe_); +      private:          //  Inbound pipes. -        typedef yarray_t <class reader_t> pipes_t; +        typedef array_t <reader_t> pipes_t;          pipes_t pipes;          //  Number of active pipes. All the active pipes are located at the @@ -59,6 +63,12 @@ namespace zmq          //  there are following parts still waiting in the current pipe.          bool more; +        //  Object to send events to. +        i_terminate_events *sink; + +        //  If true, termination process is already underway. +        bool terminating; +          fq_t (const fq_t&);          void operator = (const fq_t&);      }; | 
