add AdcDeviceNetClient class
This commit is contained in:
@@ -52,15 +52,15 @@ using adc_common_duration_t = adc_duration_common_type_t<std::chrono::nanosecond
|
||||
// a) true - asynchronous operation completed without errors
|
||||
// b) false - an error occured
|
||||
template <typename ERRT>
|
||||
concept adc_async_callback_err_t = std::convertible_to<std::remove_cvref_t<ERRT>, bool> ||
|
||||
concept adc_async_callback_err_c = std::convertible_to<std::remove_cvref_t<ERRT>, bool> ||
|
||||
requires(const std::remove_cvref_t<ERRT> err) { err.operator bool(); };
|
||||
|
||||
// concepts for asynchronous opereration callback callable
|
||||
// 1) the type must be a callable with at least 1 input argument
|
||||
// 2) the first argument type must satisfy the concept adc_async_callback_err_t
|
||||
// 2) the first argument type must satisfy the concept adc_async_callback_err_c
|
||||
template <typename T>
|
||||
concept adc_async_callback_t = traits::adc_is_callable<T> && (traits::adc_func_traits<T>::arity >= 1) &&
|
||||
adc_async_callback_err_t<traits::adc_func_arg1_t<T>>;
|
||||
concept adc_async_callback_c = traits::adc_is_callable<T> && (traits::adc_func_traits<T>::arity >= 1) &&
|
||||
adc_async_callback_err_c<traits::adc_func_arg1_t<T>>;
|
||||
|
||||
/*
|
||||
struct NetService {
|
||||
@@ -107,17 +107,17 @@ concept adc_netservice_c = requires(SRVT srv, const SRVT srv_const) {
|
||||
// underlying protocol
|
||||
|
||||
// asynchronous operation error
|
||||
requires adc_async_callback_err_t<typename SRVT::async_callback_err_t>;
|
||||
requires adc_async_callback_err_c<typename SRVT::async_callback_err_t>;
|
||||
|
||||
// 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>;
|
||||
requires adc_async_callback_c<typename SRVT::async_connect_callback_t>;
|
||||
requires adc_async_callback_c<typename SRVT::async_send_callback_t>;
|
||||
requires adc_async_callback_c<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 adc_async_callback_c<typename SRVT::acceptor_t::async_accept_callback_t>;
|
||||
requires requires(typename SRVT::acceptor_t acc, const typename SRVT::acceptor_t acc_const) {
|
||||
acc.asyncAccept(std::declval<typename SRVT::acceptor_t::async_accept_callback_t>(),
|
||||
std::declval<const typename SRVT::timeout_t&>());
|
||||
@@ -136,9 +136,6 @@ concept adc_netservice_c = requires(SRVT srv, const SRVT srv_const) {
|
||||
|
||||
|
||||
// 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.asyncConnect(std::declval<const typename SRVT::endpoint_t&>(),
|
||||
std::declval<typename SRVT::async_connect_callback_t>(),
|
||||
@@ -152,7 +149,7 @@ concept adc_netservice_c = requires(SRVT srv, const SRVT srv_const) {
|
||||
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&>());
|
||||
// it is assumed these methods throw an exception if error occures
|
||||
|
||||
srv.connect(std::declval<const typename SRVT::endpoint_t&>(), std::declval<const typename SRVT::timeout_t&>());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user