AdcGenericNetServer, AdcDeviceNetServer, AdcDeviceNetServer::Session and
AdcDeviceNetServerASIO classes now have template parameter 'IdentT' (type of identificator)
This commit is contained in:
@@ -105,10 +105,12 @@ namespace adc
|
||||
{
|
||||
|
||||
|
||||
|
||||
class AdcDeviceNetServer : public AdcGenericNetServer
|
||||
template <typename IdentT = std::string>
|
||||
class AdcDeviceNetServer : public AdcGenericNetServer<IdentT>
|
||||
{
|
||||
public:
|
||||
using typename AdcGenericNetServer<IdentT>::server_ident_t;
|
||||
|
||||
// type for serialized data (attr/command ID, attr values etc...)
|
||||
typedef std::vector<char> serialized_t;
|
||||
|
||||
@@ -206,29 +208,23 @@ protected:
|
||||
std::unordered_map<void*, DeviceWrapper> _devices;
|
||||
|
||||
public:
|
||||
template <interfaces::adc_netservice_c NetServiceT>
|
||||
class Session : public std::enable_shared_from_this<Session<NetServiceT>>
|
||||
template <interfaces::adc_netservice_c NetServiceT, traits::adc_hashable_c SessionIdentT = std::string>
|
||||
class Session : public std::enable_shared_from_this<Session<NetServiceT, SessionIdentT>>
|
||||
{
|
||||
public:
|
||||
typedef std::string netsession_ident_t;
|
||||
typedef SessionIdentT netsession_ident_t;
|
||||
typedef NetServiceT netservice_t;
|
||||
typedef AdcDeviceNetServer* netsession_ctx_t;
|
||||
|
||||
typedef std::vector<char> message_t;
|
||||
|
||||
template <traits::adc_input_char_range R>
|
||||
Session(R&& id, netservice_t srv, AdcDeviceNetServer* srv_ptr)
|
||||
: _ident(),
|
||||
Session(const netsession_ident_t& id, netservice_t srv, AdcDeviceNetServer* srv_ptr)
|
||||
: _ident(id),
|
||||
_netService(std::move(srv)),
|
||||
_serverPtr(srv_ptr),
|
||||
_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;
|
||||
} else {
|
||||
_ident = netsession_ident_t(id.begin(), id.end());
|
||||
}
|
||||
}
|
||||
|
||||
netsession_ident_t ident() const
|
||||
@@ -368,10 +364,7 @@ public:
|
||||
|
||||
|
||||
// using AdcGenericNetServer::AdcGenericNetServer;
|
||||
template <traits::adc_input_char_range R>
|
||||
AdcDeviceNetServer(const R& id) : AdcGenericNetServer(id), _devices()
|
||||
{
|
||||
}
|
||||
AdcDeviceNetServer(const server_ident_t& id) : AdcGenericNetServer<IdentT>(id), _devices() {}
|
||||
|
||||
virtual ~AdcDeviceNetServer() = default;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user