...
This commit is contained in:
@@ -153,16 +153,11 @@ protected:
|
||||
CmdIdDeserialT&& cmd_id_deser_func = {})
|
||||
: _id(id)
|
||||
{
|
||||
// _get_id = [dev_ptr, wrapper = traits::adc_pf_wrapper(std::forward<IdSerialT>(id_ser_func))]() {
|
||||
// auto id = std::get<0>(wrapper)(dev_ptr->ident());
|
||||
// return serialized_t{id.begin(), id.end()};
|
||||
// };
|
||||
|
||||
_get_attr = [dev_ptr, wrapper = traits::adc_pf_wrapper(std::forward<AttrIdDeserialT>(attr_id_deser_func)),
|
||||
this](const auto& attr_name) mutable {
|
||||
auto attr_id = std::get<0>(wrapper)(attr_name);
|
||||
// auto& attr = (*dev_ptr)[attr_id];
|
||||
auto& attr = dev_ptr->operator[](attr_id);
|
||||
auto& attr = (*dev_ptr)[attr_id];
|
||||
// auto& attr = dev_ptr->operator[](attr_id);
|
||||
auto val = attr.serialize();
|
||||
return val;
|
||||
};
|
||||
@@ -214,16 +209,28 @@ public:
|
||||
public:
|
||||
typedef SessionIdentT netsession_ident_t;
|
||||
typedef NetServiceT netservice_t;
|
||||
typedef AdcDeviceNetServer* netsession_ctx_t;
|
||||
// typedef AdcDeviceNetServer* netsession_ctx_t;
|
||||
|
||||
struct netsession_ctx_t {
|
||||
AdcDeviceNetServer* serverPtr;
|
||||
std::chrono::milliseconds recvTimeout;
|
||||
std::chrono::milliseconds sendTimeout;
|
||||
};
|
||||
|
||||
typedef std::vector<char> message_t;
|
||||
|
||||
Session(const netsession_ident_t& id, netservice_t srv, AdcDeviceNetServer* srv_ptr)
|
||||
// Session(const netsession_ident_t& id, netservice_t srv, AdcDeviceNetServer* srv_ptr)
|
||||
Session(const netsession_ident_t& id, netservice_t srv, netsession_ctx_t ctx)
|
||||
: _ident(id),
|
||||
_netService(std::move(srv)),
|
||||
_serverPtr(srv_ptr),
|
||||
_bindDevice(srv_ptr->_devices.size() ? &srv_ptr->_devices.begin()->second
|
||||
: &AdcDeviceNetServer::nullDevice)
|
||||
// _serverPtr(srv_ptr),
|
||||
// _bindDevice(srv_ptr->_devices.size() ? &srv_ptr->_devices.begin()->second
|
||||
// : &AdcDeviceNetServer::nullDevice)
|
||||
_serverPtr(ctx.serverPtr),
|
||||
_bindDevice(ctx.serverPtr->_devices.size() ? &ctx.serverPtr->_devices.begin()->second
|
||||
: &AdcDeviceNetServer::nullDevice),
|
||||
_recvTimeout(ctx.recvTimeout),
|
||||
_sendTimeout(ctx.sendTimeout)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -239,6 +246,8 @@ public:
|
||||
_netService.asyncReceive(
|
||||
[self, this](netservice_t::async_callback_err_t ec, message_t msg) {
|
||||
if (ec) {
|
||||
_serverPtr->errorMessage(std::string("asyncReceive operation completed with") +
|
||||
netservice_t::formatError(ec));
|
||||
stop();
|
||||
} else {
|
||||
auto msg_sptr = std::make_shared<message_t>(std::move(msg));
|
||||
@@ -251,6 +260,8 @@ public:
|
||||
*msg_sptr,
|
||||
[self, msg_sptr, this](netservice_t::async_callback_err_t ec) {
|
||||
if (ec) {
|
||||
_serverPtr->errorMessage(std::string("asyncSend operation completed with") +
|
||||
netservice_t::formatError(ec));
|
||||
stop();
|
||||
} else {
|
||||
start();
|
||||
@@ -273,8 +284,8 @@ public:
|
||||
AdcDeviceNetServer* _serverPtr;
|
||||
AdcDeviceNetServer::DeviceWrapper* _bindDevice;
|
||||
|
||||
std::chrono::duration<size_t> _recvTimeout = std::chrono::seconds(3600);
|
||||
std::chrono::duration<size_t> _sendTimeout = std::chrono::seconds(5);
|
||||
std::chrono::milliseconds _recvTimeout = std::chrono::hours(12);
|
||||
std::chrono::milliseconds _sendTimeout = std::chrono::seconds(5);
|
||||
|
||||
void processMessage(auto& msg)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user