diff options
| -rw-r--r-- | windows/windns/src/windns/interfaceconfig.cpp | 43 | ||||
| -rw-r--r-- | windows/windns/src/windns/interfaceconfig.h | 5 |
2 files changed, 48 insertions, 0 deletions
diff --git a/windows/windns/src/windns/interfaceconfig.cpp b/windows/windns/src/windns/interfaceconfig.cpp index 6cffb4ffe8..249c629e81 100644 --- a/windows/windns/src/windns/interfaceconfig.cpp +++ b/windows/windns/src/windns/interfaceconfig.cpp @@ -17,3 +17,46 @@ InterfaceConfig::InterfaceConfig(CComPtr<IWbemClassObject> instance) m_servers = nchelpers::GetDnsServers(instance); } + +InterfaceConfig::InterfaceConfig(common::serialization::Deserializer &deserializer) +{ + common::serialization::Deserializer &d = deserializer; + + d >> m_configIndex; + d >> (uint8_t &)m_dhcp; + d >> m_interfaceIndex; + d >> m_interfaceGuid; + + bool serversAvailable; + + d >> (uint8_t &)serversAvailable; + + if (serversAvailable) + { + m_servers = std::make_shared<std::vector<std::wstring> >(); + d >> *m_servers; + } +} + +void InterfaceConfig::serialize(common::serialization::Serializer &serializer) const +{ + common::serialization::Serializer &s = serializer; + + s << m_configIndex; + s << (uint8_t)m_dhcp; + s << m_interfaceIndex; + s << m_interfaceGuid; + + // + // TODO: Encapsulate this inside a new type. + // + if (nullptr == m_servers.get()) + { + s << (uint8_t)0; + } + else + { + s << (uint8_t)1; + s << *m_servers; + } +} diff --git a/windows/windns/src/windns/interfaceconfig.h b/windows/windns/src/windns/interfaceconfig.h index 4e0af5c482..a72142e6a4 100644 --- a/windows/windns/src/windns/interfaceconfig.h +++ b/windows/windns/src/windns/interfaceconfig.h @@ -1,6 +1,8 @@ #pragma once #include "windns/netconfighelpers.h" +#include "windns/serialization/deserializer.h" +#include "windns/serialization/serializer.h" #include <cstdint> #include <string> #include <vector> @@ -15,6 +17,9 @@ public: // instance = Win32_NetworkAdapterConfiguration. explicit InterfaceConfig(CComPtr<IWbemClassObject> instance); + explicit InterfaceConfig(common::serialization::Deserializer &deserializer); + void serialize(common::serialization::Serializer &serializer) const; + void updateServers(const InterfaceConfig &rhs) { m_servers = rhs.m_servers; |
