stream_connecter_base.hpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MPL-2.0 */
2 
3 #ifndef __STREAM_CONNECTER_BASE_HPP_INCLUDED__
4 #define __STREAM_CONNECTER_BASE_HPP_INCLUDED__
5 
6 #include "fd.hpp"
7 #include "own.hpp"
8 #include "io_object.hpp"
9 
10 namespace zmq
11 {
12 class io_thread_t;
13 class session_base_t;
14 struct address_t;
15 
17 {
18  public:
19  // If 'delayed_start' is true connecter first waits for a while,
20  // then starts connection process.
21  stream_connecter_base_t (zmq::io_thread_t *io_thread_,
22  zmq::session_base_t *session_,
23  const options_t &options_,
24  address_t *addr_,
25  bool delayed_start_);
26 
28 
29  protected:
30  // Handlers for incoming commands.
31  void process_plug () ZMQ_FINAL;
32  void process_term (int linger_) ZMQ_OVERRIDE;
33 
34  // Handlers for I/O events.
35  void in_event () ZMQ_OVERRIDE;
36  void timer_event (int id_) ZMQ_OVERRIDE;
37 
38  // Internal function to create the engine after connection was established.
39  virtual void create_engine (fd_t fd, const std::string &local_address_);
40 
41  // Internal function to add a reconnect timer
42  void add_reconnect_timer ();
43 
44  // Removes the handle from the poller.
45  void rm_handle ();
46 
47  // Close the connecting socket.
48  void close ();
49 
50  // Address to connect to. Owned by session_base_t.
51  // It is non-const since some parts may change during opening.
52  address_t *const _addr;
53 
54  // Underlying socket.
56 
57  // Handle corresponding to the listening socket, if file descriptor is
58  // registered with the poller, or NULL.
60 
61  // String representation of endpoint to connect to
63 
64  // Socket
66 
67  private:
68  // ID of the timer used to delay the reconnection.
69  enum
70  {
72  };
73 
74  // Internal function to return a reconnect backoff delay.
75  // Will modify the current_reconnect_ivl used for next call
76  // Returns the currently used interval
77  int get_new_reconnect_ivl ();
78 
79  virtual void start_connecting () = 0;
80 
81  // If true, connecter is waiting a while before trying to connect.
82  const bool _delayed_start;
83 
84  // True iff a timer has been started.
86 
87  // Current reconnect ivl, updated for backoff strategy
89 
91 
92  protected:
93  // Reference to the session we belong to.
95 };
96 }
97 
98 #endif
zmq::stream_connecter_base_t::_s
fd_t _s
Definition: stream_connecter_base.hpp:55
zmq::session_base_t
Definition: session_base.hpp:21
zmq::stream_connecter_base_t::rm_handle
void rm_handle()
Definition: stream_connecter_base.cpp:116
zmq::stream_connecter_base_t::_socket
zmq::socket_base_t *const _socket
Definition: stream_connecter_base.hpp:65
zmq::io_object_t
Definition: io_object.hpp:20
zmq::io_object_t::handle_t
poller_t::handle_t handle_t
Definition: io_object.hpp:32
zmq::options_t
Definition: options.hpp:34
zmq::stream_connecter_base_t::_handle
handle_t _handle
Definition: stream_connecter_base.hpp:59
zmq::stream_connecter_base_t::stream_connecter_base_t
stream_connecter_base_t(zmq::io_thread_t *io_thread_, zmq::session_base_t *session_, const options_t &options_, address_t *addr_, bool delayed_start_)
Definition: stream_connecter_base.cpp:19
string
GLsizei const GLchar *const * string
Definition: glcorearb.h:3083
zmq::socket_base_t
Definition: socket_base.hpp:31
zmq::stream_connecter_base_t::~stream_connecter_base_t
~stream_connecter_base_t() ZMQ_OVERRIDE
Definition: stream_connecter_base.cpp:43
zmq::fd_t
int fd_t
Definition: zmq.hpp:287
ZMQ_FINAL
#define ZMQ_FINAL
Definition: macros.hpp:35
zmq
Definition: zmq.hpp:229
ZMQ_OVERRIDE
#define ZMQ_OVERRIDE
Definition: zmq.hpp:91
zmq::stream_connecter_base_t::_session
zmq::session_base_t *const _session
Definition: stream_connecter_base.hpp:94
zmq::stream_connecter_base_t::_current_reconnect_ivl
int _current_reconnect_ivl
Definition: stream_connecter_base.hpp:88
ZMQ_NON_COPYABLE_NOR_MOVABLE
#define ZMQ_NON_COPYABLE_NOR_MOVABLE(classname)
Definition: macros.hpp:58
zmq::stream_connecter_base_t::_endpoint
std::string _endpoint
Definition: stream_connecter_base.hpp:62
fd.hpp
zmq::stream_connecter_base_t::in_event
void in_event() ZMQ_OVERRIDE
Definition: stream_connecter_base.cpp:139
zmq::stream_connecter_base_t::reconnect_timer_id
@ reconnect_timer_id
Definition: stream_connecter_base.hpp:71
zmq::stream_connecter_base_t::timer_event
void timer_event(int id_) ZMQ_OVERRIDE
Definition: stream_connecter_base.cpp:170
zmq::stream_connecter_base_t::start_connecting
virtual void start_connecting()=0
zmq::stream_connecter_base_t::get_new_reconnect_ivl
int get_new_reconnect_ivl()
Definition: stream_connecter_base.cpp:86
zmq::address_t
Definition: address.hpp:64
zmq::stream_connecter_base_t::_reconnect_timer_started
bool _reconnect_timer_started
Definition: stream_connecter_base.hpp:85
io_object.hpp
zmq::stream_connecter_base_t::process_plug
void process_plug() ZMQ_FINAL
Definition: stream_connecter_base.cpp:50
zmq::own_t
Definition: own.hpp:21
zmq::stream_connecter_base_t::create_engine
virtual void create_engine(fd_t fd, const std::string &local_address_)
Definition: stream_connecter_base.cpp:147
zmq::stream_connecter_base_t::_delayed_start
const bool _delayed_start
Definition: stream_connecter_base.hpp:82
zmq::stream_connecter_base_t
Definition: stream_connecter_base.hpp:16
zmq::stream_connecter_base_t::close
void close()
Definition: stream_connecter_base.cpp:122
zmq::stream_connecter_base_t::process_term
void process_term(int linger_) ZMQ_OVERRIDE
Definition: stream_connecter_base.cpp:58
zmq::stream_connecter_base_t::_addr
address_t *const _addr
Definition: stream_connecter_base.hpp:52
own.hpp
zmq::stream_connecter_base_t::add_reconnect_timer
void add_reconnect_timer()
Definition: stream_connecter_base.cpp:75
options_
DebugStringOptions options_
Definition: src/google/protobuf/descriptor.cc:2410


libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:59