...
This commit is contained in:
@@ -176,6 +176,15 @@ protected:
|
||||
public:
|
||||
typedef std::string server_ident_t;
|
||||
|
||||
template <traits::adc_input_char_range R>
|
||||
AdcGenericNetServer(R&& id) : _serverIdent()
|
||||
{
|
||||
if constexpr (std::is_array_v<std::remove_cvref_t<R>>) {
|
||||
_serverIdent = id;
|
||||
} else {
|
||||
_serverIdent = server_ident_t{id.begin(), id.end()};
|
||||
}
|
||||
}
|
||||
|
||||
virtual ~AdcGenericNetServer() = default;
|
||||
|
||||
@@ -192,7 +201,7 @@ public:
|
||||
const typename SessionT::netsession_ctx_t& sess_ctx,
|
||||
AcceptorCtorArgTs&&... ctor_args)
|
||||
{
|
||||
if (!_isListening<SessionT>[this]) {
|
||||
if (!_isListening<SessionT>[this][id]) {
|
||||
auto acceptor = std::make_shared<typename SessionT::netservice_t::acceptor_t>(
|
||||
std::forward<AcceptorCtorArgTs>(ctor_args)...);
|
||||
|
||||
@@ -259,29 +268,33 @@ protected:
|
||||
};
|
||||
|
||||
|
||||
template <typename SocketT>
|
||||
template <interfaces::adc_netservice_c NetServiceT>
|
||||
class AdcAbstractNetServer
|
||||
{
|
||||
public:
|
||||
struct ServerControls {
|
||||
std::function<void(SocketT*)> onOpen;
|
||||
std::function<void(SocketT*, std::error_code)> onClose;
|
||||
std::function<void(SocketT*, std::span<const char>)> onData;
|
||||
std::function<void(SocketT*, std::error_code)> onError;
|
||||
struct ServerEvents {
|
||||
std::function<void(NetServiceT*)> onOpen;
|
||||
std::function<void(NetServiceT*, std::error_code)> onClose;
|
||||
std::function<void(NetServiceT*, std::span<const char>)> onData;
|
||||
std::function<void(NetServiceT*, std::error_code)> onError;
|
||||
};
|
||||
|
||||
|
||||
AdcAbstractNetServer(ServerControls&& ctls) : _serverControls(std::move(ctls)) {}
|
||||
AdcAbstractNetServer(ServerEvents&& events) : _serverEvents(std::move(events)) {}
|
||||
|
||||
template <typename EnptT>
|
||||
void listen(const EnptT& endpoint)
|
||||
template <typename... AcceptorCtorArgTs>
|
||||
void listen(const typename NetServiceT::endpoint_t& endpoint, AcceptorCtorArgTs&&... ctor_args)
|
||||
{
|
||||
auto acceptor =
|
||||
std::make_shared<typename NetServiceT::acceptor_t>(endpoint, std::forward<AcceptorCtorArgTs>(ctor_args)...);
|
||||
}
|
||||
|
||||
void stop() {}
|
||||
|
||||
protected:
|
||||
ServerControls _serverControls;
|
||||
ServerEvents _serverEvents;
|
||||
|
||||
typename NetServiceT::acceptor_t _acceptor;
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user