AdcNetServiceASIOBase: add acceptor_t inner class
This commit is contained in:
@@ -104,26 +104,47 @@ concept adc_netservice_c = std::movable<SRVT> && requires(SRVT srv, const SRVT s
|
||||
typename SRVT::endpoint_t; // a type representing endpoint of the network service
|
||||
// underlying protocol
|
||||
|
||||
// callback callables for asynchronous operations
|
||||
requires adc_async_callback_t<typename SRVT::async_connect_callback_t>;
|
||||
requires adc_async_callback_t<typename SRVT::async_send_callback_t>;
|
||||
requires adc_async_callback_t<typename SRVT::async_receive_callback_t>;
|
||||
|
||||
|
||||
// acceptor type
|
||||
requires std::is_class_v<typename SRVT::acceptor_t>;
|
||||
requires adc_async_callback_t<typename SRVT::acceptor_t::async_accept_callback_t>;
|
||||
requires requires(typename SRVT::acceptor_t acc) {
|
||||
acc.asyncAccept(std::declval<typename SRVT::acceptor_t::async_accept_callback_t>(),
|
||||
std::declval<const typename SRVT::timeout_t&>());
|
||||
|
||||
{ acc.accept(std::declval<const typename SRVT::timeout_t&>()) } -> std::same_as<SRVT>;
|
||||
};
|
||||
|
||||
|
||||
// netservice_ident_t ident() const
|
||||
{ srv_const.ident() } -> std::same_as<typename SRVT::netservice_ident_t>;
|
||||
|
||||
typename SRVT::async_call_ctx_t;
|
||||
// typename SRVT::async_call_ctx_t;
|
||||
|
||||
|
||||
// asynchronous (non-blocking) operations
|
||||
srv.asyncAccept(std::declval<const typename SRVT::endpoint_t&>(), std::declval<typename SRVT::async_call_ctx_t&>(),
|
||||
std::declval<const typename SRVT::timeout_t&>());
|
||||
// srv.asyncAccept(std::declval<const typename SRVT::endpoint_t&>(), std::declval<typename
|
||||
// SRVT::async_call_ctx_t&>(),
|
||||
// std::declval<const typename SRVT::timeout_t&>());
|
||||
|
||||
srv.asyncConnect(std::declval<const typename SRVT::endpoint_t&>(), std::declval<typename SRVT::async_call_ctx_t&>(),
|
||||
srv.asyncConnect(std::declval<const typename SRVT::endpoint_t&>(),
|
||||
std::declval<typename SRVT::async_connect_callback_t>(),
|
||||
std::declval<const typename SRVT::timeout_t&>());
|
||||
|
||||
srv.asyncSend(std::declval<const typename SRVT::send_msg_t&>(), std::declval<typename SRVT::async_call_ctx_t&>(),
|
||||
srv.asyncSend(std::declval<const typename SRVT::send_msg_t&>(),
|
||||
std::declval<typename SRVT::async_send_callback_t>(),
|
||||
std::declval<const typename SRVT::timeout_t&>());
|
||||
|
||||
srv.asyncReceive(std::declval<typename SRVT::async_call_ctx_t&>(), std::declval<const typename SRVT::timeout_t&>());
|
||||
srv.asyncReceive(std::declval<typename SRVT::async_receive_callback_t>(),
|
||||
std::declval<const typename SRVT::timeout_t&>());
|
||||
|
||||
// synchronous (blocking) operations
|
||||
srv.accept(std::declval<const typename SRVT::endpoint_t&>(), std::declval<const typename SRVT::timeout_t&>());
|
||||
// srv.accept(std::declval<const typename SRVT::endpoint_t&>(), std::declval<const typename SRVT::timeout_t&>());
|
||||
|
||||
srv.connect(std::declval<const typename SRVT::endpoint_t&>(), std::declval<const typename SRVT::timeout_t&>());
|
||||
|
||||
@@ -141,8 +162,12 @@ template <typename SESST>
|
||||
concept adc_netsession_c =
|
||||
std::derived_from<SESST, std::enable_shared_from_this<SESST>> && requires(SESST sess, const SESST sess_const) {
|
||||
typename SESST::netsession_ident_t;
|
||||
requires adc_netservice_c<typename SESST::netservice_t>;
|
||||
typename SESST::netsession_ctx_t;
|
||||
|
||||
requires std::constructible_from<SESST, const typename SESST::netsession_ident_t, typename SESST::netservice_t,
|
||||
typename SESST::netsession_ctx_t>;
|
||||
|
||||
// netsession_ident_t ident() const
|
||||
{ sess_const.ident() } -> std::same_as<typename SESST::netsession_ident_t>;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user