summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Glacier2/RouterI.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/cpp/src/Glacier2/RouterI.cpp b/cpp/src/Glacier2/RouterI.cpp
index 830ddf5b097..f008b0306f8 100644
--- a/cpp/src/Glacier2/RouterI.cpp
+++ b/cpp/src/Glacier2/RouterI.cpp
@@ -14,6 +14,10 @@
#include <Glacier2/RouterI.h>
#include <Glacier2/Session.h>
+#ifdef ICE_CPP11_COMPILER
+# include<random>
+#endif
+
using namespace std;
using namespace Ice;
using namespace Glacier2;
@@ -49,6 +53,15 @@ Glacier2::RouterI::RouterI(const InstancePtr& instance, const ConnectionPtr& con
Identity ident;
ident.name = "dummy";
ident.category.resize(20);
+#ifdef ICE_CPP11_COMPILER
+ random_device rd;
+ mt19937 gen(rd());
+ uniform_int_distribution<> dist(33, 126); // We use ASCII 33-126 (from ! to ~, w/o space).
+ for(unsigned int i = 0; i < ident.category.size(); ++i)
+ {
+ ident.category[i] = static_cast<unsigned char>(dist(gen));
+ }
+#else
char buf[20];
IceUtilInternal::generateRandom(buf, sizeof(buf));
for(unsigned int i = 0; i < sizeof(buf); ++i)
@@ -56,6 +69,7 @@ Glacier2::RouterI::RouterI(const InstancePtr& instance, const ConnectionPtr& con
const unsigned char c = static_cast<unsigned char>(buf[i]); // A value between 0-255
ident.category[i] = 33 + c % (127-33); // We use ASCII 33-126 (from ! to ~, w/o space).
}
+#endif
serverProxy = _instance->serverObjectAdapter()->createProxy(ident);
ServerBlobjectPtr& serverBlobject = const_cast<ServerBlobjectPtr&>(_serverBlobject);