diff options
-rw-r--r-- | icetray/dryice/dryice.cpp | 9 | ||||
-rw-r--r-- | icetray/dryice/dryice.h | 10 | ||||
-rw-r--r-- | icetray/unittests/testIceTray.cpp | 7 |
3 files changed, 16 insertions, 10 deletions
diff --git a/icetray/dryice/dryice.cpp b/icetray/dryice/dryice.cpp index 50f85cb..f16a7fc 100644 --- a/icetray/dryice/dryice.cpp +++ b/icetray/dryice/dryice.cpp @@ -7,8 +7,11 @@ namespace IceTray { typedef IceBox::Service *(* SetupFunction)(Ice::CommunicatorPtr); + DryIce * DryIce::currentDryIce = nullptr; + DryIce::DryIce(const Ice::StringSeq & cmdline) { + BOOST_ASSERT(!currentDryIce); void * i = dlsym(NULL, "createIceTrayService"); BOOST_VERIFY(i); auto sf = (SetupFunction)i; @@ -16,16 +19,18 @@ namespace IceTray { Ice::StringSeq args; Ice::InitializationData id; id.properties = Ice::createProperties(); - id.properties->setProperty("DryIce.Endpoints", "tcp -p 9002"); + id.properties->setProperty("DryIce.Endpoints", "default"); id.properties->setProperty("DryIce.PoolProvider", "MockPool"); id.properties->parseCommandLineOptions("", cmdline); ic = Ice::initialize(args, id); s = sf(nullptr); s->start("DryIce", ic, {}); + currentDryIce = this; } DryIce::~DryIce() { + currentDryIce = nullptr; if (s) { s->stop(); s = NULL; @@ -38,12 +43,10 @@ namespace IceTray { DryIceClient::DryIceClient() { - ic = Ice::initialize(); } DryIceClient::~DryIceClient() { - ic->destroy(); } } diff --git a/icetray/dryice/dryice.h b/icetray/dryice/dryice.h index f81a48c..33a3989 100644 --- a/icetray/dryice/dryice.h +++ b/icetray/dryice/dryice.h @@ -13,8 +13,12 @@ namespace IceTray { virtual ~DryIce(); void operator=(const DryIce &) = delete; + std::string getEndpoint() const; protected: + friend class DryIceClient; + static DryIce * currentDryIce; + Ice::CommunicatorPtr ic; IceBox::ServicePtr s; }; @@ -24,7 +28,11 @@ namespace IceTray { DryIceClient(); virtual ~DryIceClient(); - Ice::CommunicatorPtr ic; + template<typename Prx> + Prx getProxy(const std::string & objectName) const + { + return Prx::checkedCast(DryIce::currentDryIce->ic->stringToProxy(objectName)); + } }; } diff --git a/icetray/unittests/testIceTray.cpp b/icetray/unittests/testIceTray.cpp index 401a68c..20beeb8 100644 --- a/icetray/unittests/testIceTray.cpp +++ b/icetray/unittests/testIceTray.cpp @@ -23,7 +23,7 @@ BOOST_GLOBAL_FIXTURE( Service ); class Client : public IceTray::DryIceClient { public: Client() : - p(TestIceTray::TestIceTrayServicePrx::checkedCast(ic->stringToProxy("test:tcp -p 9002"))) + p(getProxy<TestIceTray::TestIceTrayServicePrx>("test")) { } TestIceTray::TestIceTrayServicePrx p; @@ -31,11 +31,6 @@ class Client : public IceTray::DryIceClient { BOOST_FIXTURE_TEST_SUITE( client, Client ); -BOOST_AUTO_TEST_CASE( startup ) -{ - BOOST_REQUIRE(ic); -} - BOOST_AUTO_TEST_CASE( services ) { BOOST_REQUIRE(p); |