fixes
This commit is contained in:
parent
fb43a2b378
commit
39b0fad13d
@ -221,7 +221,8 @@ public:
|
||||
: _ident(),
|
||||
_netService(std::move(srv)),
|
||||
_serverPtr(srv_ptr),
|
||||
_bindDevice(srv_ptr->_devices.size() ? srv_ptr->_devices.begin()->second : AdcDeviceNetServer::nullDevice)
|
||||
_bindDevice(srv_ptr->_devices.size() ? &srv_ptr->_devices.begin()->second
|
||||
: &AdcDeviceNetServer::nullDevice)
|
||||
{
|
||||
if constexpr (std::is_array_v<std::remove_cvref_t<R>>) {
|
||||
_ident = id;
|
||||
@ -274,7 +275,7 @@ public:
|
||||
netsession_ident_t _ident;
|
||||
netservice_t _netService;
|
||||
AdcDeviceNetServer* _serverPtr;
|
||||
AdcDeviceNetServer::DeviceWrapper& _bindDevice;
|
||||
AdcDeviceNetServer::DeviceWrapper* _bindDevice;
|
||||
|
||||
std::chrono::duration<size_t> _recvTimeout = std::chrono::seconds(3600);
|
||||
std::chrono::duration<size_t> _sendTimeout = std::chrono::seconds(5);
|
||||
@ -290,8 +291,6 @@ public:
|
||||
auto get_elem = [&attrs](size_t idx) {
|
||||
if (idx < attrs.size()) {
|
||||
return attrs[idx];
|
||||
// auto& el = attrs[idx];
|
||||
// return serialized_t(el.begin(), el.end());
|
||||
} else {
|
||||
return serialized_t();
|
||||
}
|
||||
@ -307,13 +306,13 @@ public:
|
||||
bool found = false;
|
||||
for (auto& [ptr, dev_wr] : _serverPtr->_devices) {
|
||||
if (std::ranges::equal(dev_wr.ident(), dev_name)) {
|
||||
_bindDevice = dev_wr;
|
||||
_bindDevice = &dev_wr;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (found) {
|
||||
msg.ack(attrs);
|
||||
msg.ack(msg_t::DEVICE_KEY, attrs);
|
||||
} else {
|
||||
msg.err(std::make_error_code(AdcDeviceNetServerSessionError::ERROR_UNKNOWN_DEVICE_ID));
|
||||
}
|
||||
@ -325,14 +324,14 @@ public:
|
||||
for (auto& [ptr, dev_wr] : _serverPtr->_devices) {
|
||||
names.emplace_back(dev_wr.ident());
|
||||
}
|
||||
msg.ack(names);
|
||||
msg.ack(msg_t::NAMES_KEY, names);
|
||||
} else if (msg.isHELLO()) {
|
||||
msg.ack(msg_t::HELLO_KEY, _serverPtr->_serverIdent);
|
||||
} else if (msg.isGET()) { // get attribute value
|
||||
attrs = msg.template attrs<attr_vec_t>(0, 1);
|
||||
if (attrs.size()) {
|
||||
auto val = _bindDevice.getAttr(get_elem(0));
|
||||
// msg.ack(get_elem(0), serialized_t{val.begin(), val.end()});
|
||||
msg.ack(get_elem(0), val);
|
||||
auto val = _bindDevice->getAttr(get_elem(0));
|
||||
msg.ack(msg_t::GET_KEY, get_elem(0), val);
|
||||
} else { // no attr name!
|
||||
msg.err(std::make_error_code(AdcDeviceNetServerSessionError::ERROR_NO_PROTO_ATTRNAME));
|
||||
}
|
||||
@ -340,9 +339,8 @@ public:
|
||||
attrs = msg.template attrs<attr_vec_t>(0);
|
||||
if (attrs.size() >= 2) {
|
||||
auto val = msg.template joinAttrs<serialized_t>(1);
|
||||
_bindDevice.setAttr(get_elem(0), val);
|
||||
// msg.ack(get_elem(0), serialized_t{val.begin(), val.end()});
|
||||
msg.ack(get_elem(0), val);
|
||||
_bindDevice->setAttr(get_elem(0), val);
|
||||
msg.ack(msg_t::SET_KEY, get_elem(0), val);
|
||||
} else { // no attr name or its value!
|
||||
if (attrs.size() == 1) {
|
||||
msg.err(std::make_error_code(AdcDeviceNetServerSessionError::ERROR_NO_PROTO_ATTRVALUE));
|
||||
@ -354,8 +352,8 @@ public:
|
||||
attrs = msg.template attrs<attr_vec_t>(0, 1);
|
||||
if (attrs.size()) {
|
||||
auto cmd_name = get_elem(0);
|
||||
_bindDevice.exec(cmd_name);
|
||||
msg.ack(cmd_name);
|
||||
_bindDevice->exec(cmd_name);
|
||||
msg.ack(msg_t::CMD_KEY, cmd_name);
|
||||
} else { // no cmd name!
|
||||
msg.err(std::make_error_code(AdcDeviceNetServerSessionError::ERROR_NO_PROTO_CMDNAME));
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user