SRS-control 0.1.4
Loading...
Searching...
No Matches
srs::connection::SpecialSocket Class Reference

#include <SpecialSocketBase.hpp>

Collaboration diagram for srs::connection::SpecialSocket:

Public Member Functions

void register_send_action (this auto &&self, asio::awaitable< void > action, const std::shared_ptr< typename std::remove_cvref_t< decltype(self)>::ConnectionType > &connection)
void listen (this auto &self, io_context_type &io_context)
auto is_valid () const -> bool
auto cancel_listen_after (this auto &&self, io_context_type &io_context, std::chrono::seconds waiting_time=std::chrono::seconds(2)) -> std::future< void >
auto wait_for_listen_finish (std::chrono::seconds time) -> std::optional< std::future_status >
auto get_socket () const -> auto &
auto get_port () const
auto get_socket_error_code () const -> auto
auto get_future () -> auto &

Static Public Member Functions

template<SpecialSocketDerived SocketType, typename... Args>
static auto create (int port_number, io_context_type &io_context, Args... args) -> std::expected< std::shared_ptr< SocketType >, boost::system::error_code >

Protected Member Functions

 SpecialSocket (int port_number, io_context_type &io_context)
auto get_cancel_timer () -> auto &

Private Member Functions

auto cancel_coroutine () -> asio::awaitable< void >
void bind_socket ()
void close_socket ()

Static Private Member Functions

template<SpecialSocketDerived SocketType>
static auto listen_all_connections (std::shared_ptr< SocketType > socket) -> asio::awaitable< void >

Private Attributes

bool is_valid_ = false
int port_number_ = 0
std::unique_ptr< udp::socket > socket_
std::shared_future< std::variant< std::monostate, std::monostate > > listen_future_
boost::system::error_code socket_ec_
asio::system_timer cancel_timer_
 Used for cancel the unfinished coroutine.

Detailed Description

Definition at line 47 of file SpecialSocketBase.hpp.

Constructor & Destructor Documentation

◆ SpecialSocket()

srs::connection::SpecialSocket::SpecialSocket ( int port_number,
io_context_type & io_context )
explicitprotected

Definition at line 16 of file SpecialSocketBase.cpp.

Member Function Documentation

◆ bind_socket()

void srs::connection::SpecialSocket::bind_socket ( )
private

Definition at line 33 of file SpecialSocketBase.cpp.

◆ cancel_coroutine()

auto srs::connection::SpecialSocket::cancel_coroutine ( ) ->asio::awaitable< void >
private

Definition at line 25 of file SpecialSocketBase.cpp.

◆ cancel_listen_after()

auto srs::connection::SpecialSocket::cancel_listen_after ( this auto && self,
io_context_type & io_context,
std::chrono::seconds waiting_time = std::chrono::seconds(2) )->std::future< void >

Definition at line 160 of file SpecialSocketBase.hpp.

◆ close_socket()

void srs::connection::SpecialSocket::close_socket ( )
private

Definition at line 37 of file SpecialSocketBase.cpp.

◆ create()

template<SpecialSocketDerived SocketType, typename... Args>
auto srs::connection::SpecialSocket::create ( int port_number,
io_context_type & io_context,
Args... args )->std::expected< std::shared_ptr< SocketType >, boost::system::error_code >
static

Definition at line 97 of file SpecialSocketBase.hpp.

◆ get_cancel_timer()

auto srs::connection::SpecialSocket::get_cancel_timer ( ) ->auto &
inlineprotected

Definition at line 77 of file SpecialSocketBase.hpp.

◆ get_future()

auto srs::connection::SpecialSocket::get_future ( ) ->auto &
inline

Definition at line 73 of file SpecialSocketBase.hpp.

◆ get_port()

auto srs::connection::SpecialSocket::get_port ( ) const
inlinenodiscard

Definition at line 71 of file SpecialSocketBase.hpp.

◆ get_socket()

auto srs::connection::SpecialSocket::get_socket ( ) const->auto &
inlinenodiscard

Definition at line 70 of file SpecialSocketBase.hpp.

◆ get_socket_error_code()

auto srs::connection::SpecialSocket::get_socket_error_code ( ) const->auto
inlinenodiscard

Definition at line 72 of file SpecialSocketBase.hpp.

◆ is_valid()

auto srs::connection::SpecialSocket::is_valid ( ) const->bool
inline

Definition at line 61 of file SpecialSocketBase.hpp.

◆ listen()

void srs::connection::SpecialSocket::listen ( this auto & self,
io_context_type & io_context )

Definition at line 150 of file SpecialSocketBase.hpp.

◆ listen_all_connections()

template<SpecialSocketDerived SocketType>
auto srs::connection::SpecialSocket::listen_all_connections ( std::shared_ptr< SocketType > socket) ->asio::awaitable< void >
staticprivate

Definition at line 115 of file SpecialSocketBase.hpp.

◆ register_send_action()

void srs::connection::SpecialSocket::register_send_action ( this auto && self,
asio::awaitable< void > action,
const std::shared_ptr< typename std::remove_cvref_t< decltype(self)>::ConnectionType > & connection )

Definition at line 136 of file SpecialSocketBase.hpp.

◆ wait_for_listen_finish()

auto srs::connection::SpecialSocket::wait_for_listen_finish ( std::chrono::seconds time) ->std::optional< std::future_status >

Definition at line 39 of file SpecialSocketBase.cpp.

Member Data Documentation

◆ cancel_timer_

asio::system_timer srs::connection::SpecialSocket::cancel_timer_
private

Used for cancel the unfinished coroutine.

Definition at line 85 of file SpecialSocketBase.hpp.

◆ is_valid_

bool srs::connection::SpecialSocket::is_valid_ = false
private

Definition at line 80 of file SpecialSocketBase.hpp.

◆ listen_future_

std::shared_future<std::variant<std::monostate, std::monostate> > srs::connection::SpecialSocket::listen_future_
private

Definition at line 83 of file SpecialSocketBase.hpp.

◆ port_number_

int srs::connection::SpecialSocket::port_number_ = 0
private

Definition at line 81 of file SpecialSocketBase.hpp.

◆ socket_

std::unique_ptr<udp::socket> srs::connection::SpecialSocket::socket_
private

Definition at line 82 of file SpecialSocketBase.hpp.

◆ socket_ec_

boost::system::error_code srs::connection::SpecialSocket::socket_ec_
private

Definition at line 84 of file SpecialSocketBase.hpp.


The documentation for this class was generated from the following files: