summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Glacier2/Glacier2Router.cpp51
-rw-r--r--cpp/src/Glacier2/SessionRouterI.cpp10
-rw-r--r--cpp/src/Ice/PropertyNames.cpp4
-rw-r--r--cpp/src/Ice/PropertyNames.h2
-rw-r--r--cpp/src/IceGrid/Client.cpp6
-rw-r--r--cpp/src/IceGrid/RegistryI.cpp28
-rw-r--r--cpp/src/IceStorm/Admin.cpp28
-rw-r--r--cpp/src/IceStorm/Service.cpp34
8 files changed, 124 insertions, 39 deletions
diff --git a/cpp/src/Glacier2/Glacier2Router.cpp b/cpp/src/Glacier2/Glacier2Router.cpp
index b8589caa4e0..a44e8db6985 100644
--- a/cpp/src/Glacier2/Glacier2Router.cpp
+++ b/cpp/src/Glacier2/Glacier2Router.cpp
@@ -22,7 +22,7 @@ using namespace std;
using namespace Ice;
using namespace Glacier2;
-namespace Glacier2
+namespace
{
class RouterService : public Service
@@ -66,14 +66,33 @@ public:
}
};
+class FinderI : public Ice::RouterFinder
+{
+public:
+
+ FinderI(const Glacier2::RouterPrx& router) : _router(router)
+ {
+ }
+
+ virtual Ice::RouterPrx
+ getRouter(const Ice::Current&)
+ {
+ return _router;
+ }
+
+private:
+
+ const Glacier2::RouterPrx _router;
+};
+
};
-Glacier2::RouterService::RouterService()
+RouterService::RouterService()
{
}
bool
-Glacier2::RouterService::start(int argc, char* argv[], int& status)
+RouterService::start(int argc, char* argv[], int& status)
{
bool nowarn;
@@ -465,6 +484,24 @@ Glacier2::RouterService::start(int argc, char* argv[], int& status)
//
_sessionRouter = new SessionRouterI(_instance, verifier, sessionManager, sslVerifier, sslSessionManager);
+ //
+ // Th session router is used directly as servant for the main
+ // Glacier2 router Ice object.
+ //
+ Identity routerId;
+ routerId.category = _instance->properties()->getPropertyWithDefault("Glacier2.InstanceName", "Glacier2");
+ routerId.name = "router";
+ Glacier2::RouterPrx routerPrx = Glacier2::RouterPrx::uncheckedCast(clientAdapter->add(_sessionRouter, routerId));
+
+ //
+ // Add the Ice router finder object to allow retrieving the router
+ // proxy with just the endpoint information of the router.
+ //
+ Identity finderId;
+ finderId.category = "Ice";
+ finderId.name = "RouterFinder";
+ clientAdapter->add(new FinderI(routerPrx), finderId);
+
if(_instance->getObserver())
{
_instance->getObserver()->setObserverUpdater(_sessionRouter);
@@ -496,7 +533,7 @@ Glacier2::RouterService::start(int argc, char* argv[], int& status)
}
bool
-Glacier2::RouterService::stop()
+RouterService::stop()
{
if(_sessionRouter)
{
@@ -517,7 +554,7 @@ Glacier2::RouterService::stop()
}
CommunicatorPtr
-Glacier2::RouterService::initializeCommunicator(int& argc, char* argv[],
+RouterService::initializeCommunicator(int& argc, char* argv[],
const InitializationData& initializationData)
{
InitializationData initData = initializationData;
@@ -549,7 +586,7 @@ Glacier2::RouterService::initializeCommunicator(int& argc, char* argv[],
}
void
-Glacier2::RouterService::usage(const string& appName)
+RouterService::usage(const string& appName)
{
string options =
"Options:\n"
@@ -581,6 +618,6 @@ main(int argc, char* argv[])
#endif
{
- Glacier2::RouterService svc;
+ RouterService svc;
return svc.main(argc, argv);
}
diff --git a/cpp/src/Glacier2/SessionRouterI.cpp b/cpp/src/Glacier2/SessionRouterI.cpp
index 992cd8f67dd..21145379e4e 100644
--- a/cpp/src/Glacier2/SessionRouterI.cpp
+++ b/cpp/src/Glacier2/SessionRouterI.cpp
@@ -602,14 +602,6 @@ SessionRouterI::SessionRouterI(const InstancePtr& instance,
_sessionDestroyCallback(newCallback_Session_destroy(this, &SessionRouterI::sessionDestroyException)),
_destroy(false)
{
- //
- // This session router is used directly as servant for the main
- // Glacier2 router Ice object.
- //
- Identity routerId;
- routerId.category = _instance->properties()->getPropertyWithDefault("Glacier2.InstanceName", "Glacier2");
- routerId.name = "router";
-
if(_sessionThread)
{
__setNoDelete(true);
@@ -629,8 +621,6 @@ SessionRouterI::SessionRouterI(const InstancePtr& instance,
try
{
- _instance->clientObjectAdapter()->add(this, routerId);
-
//
// All other calls on the client object adapter are dispatched to
// a router servant based on connection information.
diff --git a/cpp/src/Ice/PropertyNames.cpp b/cpp/src/Ice/PropertyNames.cpp
index acadc7fb151..475a08db4b2 100644
--- a/cpp/src/Ice/PropertyNames.cpp
+++ b/cpp/src/Ice/PropertyNames.cpp
@@ -6,7 +6,7 @@
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************
-// Generated by makeprops.py from file ../config/PropertyNames.xml, Wed Jul 9 18:08:33 2014
+// Generated by makeprops.py from file ./config/PropertyNames.xml, Tue Jul 15 11:44:29 2014
// IMPORTANT: Do not edit this file -- any edits made here will be lost!
@@ -1047,6 +1047,8 @@ const IceInternal::PropertyArray
const IceInternal::Property IceStormAdminPropsData[] =
{
IceInternal::Property("IceStormAdmin.TopicManager.*", false, 0),
+ IceInternal::Property("IceStormAdmin.Host", false, 0),
+ IceInternal::Property("IceStormAdmin.Port", false, 0),
};
const IceInternal::PropertyArray
diff --git a/cpp/src/Ice/PropertyNames.h b/cpp/src/Ice/PropertyNames.h
index 7f413070df8..126b5ab08f0 100644
--- a/cpp/src/Ice/PropertyNames.h
+++ b/cpp/src/Ice/PropertyNames.h
@@ -6,7 +6,7 @@
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************
-// Generated by makeprops.py from file ../config/PropertyNames.xml, Wed Jul 9 18:08:33 2014
+// Generated by makeprops.py from file ./config/PropertyNames.xml, Tue Jul 15 11:44:29 2014
// IMPORTANT: Do not edit this file -- any edits made here will be lost!
diff --git a/cpp/src/IceGrid/Client.cpp b/cpp/src/IceGrid/Client.cpp
index 191d5749a88..df2a0979b52 100644
--- a/cpp/src/IceGrid/Client.cpp
+++ b/cpp/src/IceGrid/Client.cpp
@@ -527,13 +527,13 @@ Client::run(StringSeq& originalArgs)
{
const int timeout = 3000; // 3s connection timeout.
ostringstream os;
- os << "IceGridDiscovery/Lookup" << (ssl ? " -s" : "");
+ os << "Ice/LocatorFinder" << (ssl ? " -s" : "");
os << ":tcp -h \"" << host << "\" -p " << (port == 0 ? 4061 : port) << " -t " << timeout;
os << ":ssl -h \"" << host << "\" -p " << (port == 0 ? 4063 : port) << " -t " << timeout;
- LookupPrx lookup = LookupPrx::uncheckedCast(communicator()->stringToProxy(os.str()));
+ LocatorFinderPrx finder = LocatorFinderPrx::uncheckedCast(communicator()->stringToProxy(os.str()));
try
{
- communicator()->setDefaultLocator(lookup->getLocator());
+ communicator()->setDefaultLocator(finder->getLocator());
}
catch(const Ice::LocalException&)
{
diff --git a/cpp/src/IceGrid/RegistryI.cpp b/cpp/src/IceGrid/RegistryI.cpp
index 0892fd5a1f8..8ab2ed0bd92 100644
--- a/cpp/src/IceGrid/RegistryI.cpp
+++ b/cpp/src/IceGrid/RegistryI.cpp
@@ -174,6 +174,25 @@ private:
const WellKnownObjectsManagerPtr _wellKnownObjects;
};
+class FinderI : public Ice::LocatorFinder
+{
+public:
+
+ FinderI(const WellKnownObjectsManagerPtr& wellKnownObjects) : _wellKnownObjects(wellKnownObjects)
+ {
+ }
+
+ virtual Ice::LocatorPrx
+ getLocator(const Ice::Current&)
+ {
+ return _wellKnownObjects->getLocator();
+ }
+
+private:
+
+ const WellKnownObjectsManagerPtr _wellKnownObjects;
+};
+
}
RegistryI::RegistryI(const CommunicatorPtr& communicator,
@@ -585,11 +604,9 @@ RegistryI::startImpl()
}
//
- // Setup the lookup servant and add it to the client adapter.
+ // Add the locator finder object to the client adapter.
//
- Ice::Identity id = _communicator->stringToIdentity("IceGridDiscovery/Lookup");
- Ice::ObjectPtr lookup = new LookupI(_instanceName, _wellKnownObjects);
- _clientAdapter->add(lookup, id);
+ _clientAdapter->add(new FinderI(_wellKnownObjects), _communicator->stringToIdentity("Ice/LocatorFinder"));
//
// Setup the discovery object adapter and also add it the lookup
@@ -623,8 +640,9 @@ RegistryI::startImpl()
try
{
+ Ice::Identity lookupId = _communicator->stringToIdentity("IceGridDiscovery/Lookup");
discoveryAdapter = _communicator->createObjectAdapter("IceGrid.Registry.Discovery");
- discoveryAdapter->add(lookup, id);
+ discoveryAdapter->add(new LookupI(_instanceName, _wellKnownObjects), lookupId);
}
catch(const Ice::LocalException& ex)
{
diff --git a/cpp/src/IceStorm/Admin.cpp b/cpp/src/IceStorm/Admin.cpp
index 6377b77c5e9..392d58fea8c 100644
--- a/cpp/src/IceStorm/Admin.cpp
+++ b/cpp/src/IceStorm/Admin.cpp
@@ -41,12 +41,7 @@ main(int argc, char* argv[])
Ice::InitializationData id;
Ice::StringSeq args = Ice::argsToStringSeq(argc, argv);
id.properties = Ice::createProperties(args);
- //
- // We don't want to load DB plug-ins with icestormadmin, as this will
- // cause FileLock issues when run with the same configuration file
- // used by the service.
- //
- id.properties->setProperty("Ice.Plugin.DB", "");
+ id.properties->setProperty("Ice.Warn.Endpoints", "0");
int rc = app.main(argc, argv, id);
return rc;
}
@@ -157,6 +152,27 @@ Client::run(int argc, char* argv[])
if(!defaultManager)
{
+ string host = properties->getProperty("IceStormAdmin.Host");
+ string port = properties->getProperty("IceStormAdmin.Port");
+
+ const int timeout = 3000; // 3s connection timeout.
+ ostringstream os;
+ os << "IceStorm/Finder";
+ os << ":tcp" << (host.empty() ? "" : (" -h \"" + host + "\"")) << " -p " << port << " -t " << timeout;
+ os << ":ssl" << (host.empty() ? "" : (" -h \"" + host + "\"")) << " -p " << port << " -t " << timeout;
+ IceStorm::FinderPrx finder = IceStorm::FinderPrx::uncheckedCast(communicator()->stringToProxy(os.str()));
+ try
+ {
+ defaultManager = finder->getTopicManager();
+ }
+ catch(const Ice::LocalException&)
+ {
+ // Ignore.
+ }
+ }
+
+ if(!defaultManager)
+ {
cerr << appName() << ": no manager proxies configured" << endl;
return EXIT_FAILURE;
}
diff --git a/cpp/src/IceStorm/Service.cpp b/cpp/src/IceStorm/Service.cpp
index 02423174323..dc722a2ba6d 100644
--- a/cpp/src/IceStorm/Service.cpp
+++ b/cpp/src/IceStorm/Service.cpp
@@ -35,7 +35,7 @@ using namespace IceStorm;
using namespace IceStormInternal;
using namespace IceStormElection;
-namespace IceStormInternal
+namespace
{
class ServiceI : public IceStormInternal::Service
@@ -70,6 +70,25 @@ private:
InstancePtr _instance;
};
+class FinderI : public IceStorm::Finder
+{
+public:
+
+ FinderI(const TopicManagerPrx& topicManager) : _topicManager(topicManager)
+ {
+ }
+
+ virtual TopicManagerPrx
+ getTopicManager(const Ice::Current&)
+ {
+ return _topicManager;
+ }
+
+private:
+
+ const TopicManagerPrx _topicManager;
+};
+
}
extern "C"
@@ -372,6 +391,9 @@ ServiceI::start(
throw e;
}
}
+
+ topicAdapter->add(new FinderI(TopicManagerPrx::uncheckedCast(topicAdapter->createProxy(topicManagerId))),
+ communicator->stringToIdentity("IceStorm/Finder"));
topicAdapter->activate();
publishAdapter->activate();
@@ -379,11 +401,11 @@ ServiceI::start(
void
ServiceI::start(const CommunicatorPtr& communicator,
- const ObjectAdapterPtr& topicAdapter,
- const ObjectAdapterPtr& publishAdapter,
- const string& name,
- const Ice::Identity& id,
- const string& /*dbEnv*/)
+ const ObjectAdapterPtr& topicAdapter,
+ const ObjectAdapterPtr& publishAdapter,
+ const string& name,
+ const Ice::Identity& id,
+ const string& /*dbEnv*/)
{
//
// For IceGrid we don't validate the properties as all sorts of