rewrite SESSION_PROTO.search
rewrite ASIO NETSERVICE.asyncReceive rewrite ASIO NETSESSION
This commit is contained in:
@@ -25,7 +25,6 @@ namespace adc
|
||||
{
|
||||
|
||||
|
||||
|
||||
class AdcNetServer
|
||||
{
|
||||
protected:
|
||||
@@ -41,10 +40,28 @@ public:
|
||||
return _serverIdent;
|
||||
}
|
||||
|
||||
template <interfaces::adc_netservice_c SRVT>
|
||||
void start(SRVT&& netservice, const typename SRVT::endpoint_t& endpoint) {};
|
||||
template <interfaces::adc_netsession_c SessionT, typename... NetsrvCtorArgTs>
|
||||
void start(const typename SessionT::netservice_t::endpoint_t& endpoint,
|
||||
const typename SessionT::netsession_ident_t& id,
|
||||
typename SessionT::netsession_ctx_t&& sess_ctx,
|
||||
NetsrvCtorArgTs&&... ctor_args)
|
||||
{
|
||||
typename SessionT::netservice_t netservice(std::forward<NetsrvCtorArgTs>(ctor_args)...);
|
||||
|
||||
virtual void stop() {};
|
||||
netservice.asyncAccept(endpoint, [&endpoint, &id, sess_ctx, this](auto ec, auto...) {
|
||||
if (!ec) {
|
||||
auto sess = std::make_shared<SessionT>(id, std::forward<typename SessionT::netsession_ctx_t>(sess_ctx));
|
||||
startSession(sess);
|
||||
|
||||
start(endpoint, id, sess_ctx);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
virtual void stop()
|
||||
{
|
||||
stopAllSessions();
|
||||
};
|
||||
|
||||
|
||||
// run server as daemon (still only on POSIX OSes)
|
||||
|
||||
Reference in New Issue
Block a user