RESTinio
tcp_connection_ctx_base.hpp
Go to the documentation of this file.
1 /*
2  restinio
3 */
4 
5 /*!
6  A base class for all classes that deal with connection context.
7 */
8 
9 #pragma once
10 
11 #include <memory>
12 
13 #include <restinio/connection_state_listener.hpp>
14 
15 namespace restinio
16 {
17 
18 //
19 // tcp_connection_ctx_base_t
20 //
21 
22 //! TCP connection base.
23 /*!
24  Class serves as a root class for all connection context wrappers,
25  that can be passed in asio callbacks.
26 */
29 {
30  public:
31  tcp_connection_ctx_base_t(connection_id_t id )
32  : m_connection_id{ id }
33  {}
34 
35  virtual ~tcp_connection_ctx_base_t() = default;
36 
37  //! Get connection id.
38  connection_id_t connection_id() const noexcept { return m_connection_id; }
39 
40  //! Check timeouts for all activities.
41  virtual void
43  //! A handle to itself (eliminates one shared_ptr instantiation).
44  std::shared_ptr< tcp_connection_ctx_base_t > & self ) = 0;
45 
46  protected:
47 
48  //! Cast self to derived class.
49  template < typename Derived >
52  {
54  }
55 
56  private:
57  //! Id of a connection.
59 };
60 
61 //! Alias for http connection handle.
63 
64 //! Alias for http connection weak handle.
66 
67 } /* namespace restinio */
const connection_id_t m_connection_id
Id of a connection.
virtual void check_timeout(std::shared_ptr< tcp_connection_ctx_base_t > &self)=0
Check timeouts for all activities.
connection_id_t connection_id() const noexcept
Get connection id.
std::shared_ptr< Derived > shared_from_concrete()
Cast self to derived class.
virtual ~tcp_connection_ctx_base_t()=default
std::enable_if< std::is_same< Parameter_Container, query_string_params_t >::value||std::is_same< Parameter_Container, router::route_params_t >::value, optional_t< Value_Type > >::type opt_value(const Parameter_Container &params, string_view_t key)
Gets the value of a parameter specified by key wrapped in optional_t<Value_Type> if parameter exists ...
Definition: value_or.hpp:64