summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Network.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2015-02-09 12:07:36 +0100
committerBenoit Foucher <benoit@zeroc.com>2015-02-09 12:07:36 +0100
commit470356b4a8b868a591e2841d7b9671d8e54c7b73 (patch)
treec4739742e5eed2cbc3cd3ef0e9384b7ea6c08999 /cpp/src/Ice/Network.cpp
parentRemoved bogus tracing from Ice/admin Java test (diff)
downloadice-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.cpp30
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