This commit is contained in:
Timur A. Fatkhullin
2024-10-09 00:33:30 +03:00
parent 76d8fb6916
commit bd0654a8af
3 changed files with 189 additions and 22 deletions

View File

@@ -184,15 +184,17 @@ public:
// start accepting remote connections, create and start given network session
// It must be assumed that this is asynchronous operation!!!
template <interfaces::adc_netsession_c SessionT, typename... AccCtorArgTs>
template <interfaces::adc_netsession_c SessionT, typename... AcceptorCtorArgTs>
void start(const typename SessionT::netsession_ident_t& id,
const typename SessionT::netsession_ctx_t& sess_ctx,
AccCtorArgTs&&... ctor_args)
AcceptorCtorArgTs&&... ctor_args)
{
auto acceptor =
std::make_shared<typename SessionT::netservice_t::acceptor_t>(std::forward<AccCtorArgTs>(ctor_args)...);
if (!_isListening<SessionT>[this]) {
auto acceptor = std::make_shared<typename SessionT::netservice_t::acceptor_t>(
std::forward<AcceptorCtorArgTs>(ctor_args)...);
doAccept<SessionT>(acceptor, id, sess_ctx);
doAccept<SessionT>(acceptor, id, sess_ctx);
}
};
@@ -218,7 +220,7 @@ protected:
server_ident_t _serverIdent;
template <typename SessionT, typename AT, typename IDT, typename CTXT>
void doAccept(std::shared_ptr<AT> acceptor, const IDT& id, CTXT& sess_ctx)
void doAccept(std::shared_ptr<AT> acceptor, const IDT& id, const CTXT& sess_ctx)
{
acceptor.asyncAccept([acceptor, &id, &sess_ctx, this](auto ec, typename SessionT::netservice_t srv) mutable {
if (!ec) {