Dripline-Cpp  v2.4.2
Dripline Implementation in C++
listener.hh
Go to the documentation of this file.
1 /*
2  * listener.hh
3  *
4  * Created on: Jun 23, 2019
5  * Author: N.S. Oblath
6  */
7 
8 #ifndef DRIPLINE_LISTENER_HH_
9 #define DRIPLINE_LISTENER_HH_
10 
11 #include "dripline_fwd.hh"
12 
13 #include "receiver.hh"
14 
15 #include "cancelable.hh"
16 #include "member_variables.hh"
17 
18 #include <thread>
19 
20 namespace dripline
21 {
47  class DRIPLINE_API listener : public virtual scarab::cancelable
48  {
49  public:
50  listener();
51  listener( const listener& ) = delete;
52  listener( listener&& a_orig );
53  virtual ~listener();
54 
55  listener& operator=( const listener& ) = delete;
56  listener& operator=( listener&& a_orig );
57 
58  virtual bool listen_on_queue() = 0;
59 
60  mv_referrable( amqp_channel_ptr, channel );
61 
62  mv_referrable( std::string, consumer_tag );
63 
64  mv_accessible( unsigned, listen_timeout_ms );
65 
66  mv_referrable( std::thread, listener_thread );
67  };
68 
76  {
77  public:
79  listener_receiver( const listener_receiver& ) = delete;
81  scarab::cancelable( std::move(a_orig) ),
82  listener( std::move(a_orig) ),
83  concurrent_receiver( std::move(a_orig) )
84  {}
85 
86  listener_receiver& operator=( const listener_receiver& ) = delete;
88  {
89  listener::operator=( std::move(a_orig) );
90  concurrent_receiver::operator=( std::move(a_orig) );
91  return *this;
92  }
93  };
94 
105  {
106  public:
107  endpoint_listener_receiver( endpoint_ptr_t a_endpoint_ptr );
110  virtual ~endpoint_listener_receiver();
111 
112  endpoint_listener_receiver& operator=( const endpoint_listener_receiver& ) = delete;
114 
116  virtual bool listen_on_queue();
117 
118  protected:
120  virtual void submit_message( message_ptr_t a_message );
121 
123  mv_referrable( endpoint_ptr_t, endpoint );
124  };
125 
126 
127 
128 } /* namespace dripline */
129 
130 #endif /* DRIPLINE_LISTENER_HH_ */
listener_receiver(listener_receiver &&a_orig)
Definition: listener.hh:80
Receives and processes messages concurrently.
Definition: receiver.hh:153
STL namespace.
concurrent_receiver & operator=(const concurrent_receiver &)=delete
Definition: core.hh:17
#define DRIPLINE_API
Definition: dripline_api.hh:34
Convenience class to bring together listener and concurrent_receiver.
Definition: listener.hh:75
Decorator class for a plain endpoint: adds listener_receiver capabilities.
Definition: listener.hh:104
A listener is a class capable of listening for AMQP messages on an AMQP channel. This class provides ...
Definition: listener.hh:47
std::shared_ptr< endpoint > endpoint_ptr_t
Definition: dripline_fwd.hh:39
AmqpClient::Channel::ptr_t amqp_channel_ptr
Definition: amqp.hh:24
listener & operator=(const listener &)=delete
listener_receiver & operator=(listener_receiver &&a_orig)
Definition: listener.hh:87
std::shared_ptr< message > message_ptr_t
Definition: dripline_fwd.hh:20
Basic Dripline object capable of receiving and acting on messages.
Definition: endpoint.hh:95