diff options
author | Benoit Foucher <benoit@zeroc.com> | 2015-02-09 12:07:36 +0100 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2015-02-09 12:07:36 +0100 |
commit | 470356b4a8b868a591e2841d7b9671d8e54c7b73 (patch) | |
tree | c4739742e5eed2cbc3cd3ef0e9384b7ea6c08999 /cpp/src/Ice/Network.cpp | |
parent | Removed bogus tracing from Ice/admin Java test (diff) | |
download | ice-470356b4a8b868a591e2841d7b9671d8e54c7b73.tar.bz2 ice-470356b4a8b868a591e2841d7b9671d8e54c7b73.tar.xz ice-470356b4a8b868a591e2841d7b9671d8e54c7b73.zip |
Fixed ICE-6296 - Added WinRT support for getHostsForEndpointExpand
Diffstat (limited to 'cpp/src/Ice/Network.cpp')
-rw-r--r-- | cpp/src/Ice/Network.cpp | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/cpp/src/Ice/Network.cpp b/cpp/src/Ice/Network.cpp index 682dbe038db..2271916f2ac 100644 --- a/cpp/src/Ice/Network.cpp +++ b/cpp/src/Ice/Network.cpp @@ -79,9 +79,11 @@ using namespace IceInternal; #ifdef ICE_OS_WINRT using namespace Platform; using namespace Windows::Foundation; +using namespace Windows::Foundation::Collections; using namespace Windows::Storage::Streams; using namespace Windows::Networking; using namespace Windows::Networking::Sockets; +using namespace Windows::Networking::Connectivity; #endif namespace @@ -1449,12 +1451,32 @@ IceInternal::isAddressValid(const Address& addr) #ifdef ICE_OS_WINRT vector<string> -IceInternal::getHostsForEndpointExpand(const string&, ProtocolSupport, bool) +IceInternal::getHostsForEndpointExpand(const string& host, ProtocolSupport protocolSupport, bool includeLoopback) { - // - // No support for expanding wildcard addresses on WinRT - // vector<string> hosts; + if(host.empty() || host == "0.0.0.0" || host == "::" || host == "0:0:0:0:0:0:0:0") + { + for(IIterator<HostName^>^ it = NetworkInformation::GetHostNames()->First(); it->HasCurrent; it->MoveNext()) + { + HostName^ h = it->Current; + if(h->IPInformation != nullptr && h->IPInformation->NetworkAdapter != nullptr) + { + hosts.push_back(IceUtil::wstringToString(h->CanonicalName->Data(), + IceUtil::getProcessStringConverter())); + } + } + if(includeLoopback) + { + if(protocolSupport != EnableIPv6) + { + hosts.push_back("127.0.0.1"); + } + if(protocolSupport != EnableIPv4) + { + hosts.push_back("::1"); + } + } + } return hosts; } #else |