diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2015-12-23 20:01:01 +0000 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2015-12-23 20:01:01 +0000 |
commit | 55ecfddbd42a8c75e504d5b63cf9e5e1fe725399 (patch) | |
tree | 18b3a9fee78390a87dcfa58a20ee813db62b80d2 /icetray/dryice.cpp | |
parent | Switch lib64 references for native ones (diff) | |
download | icetray-55ecfddbd42a8c75e504d5b63cf9e5e1fe725399.tar.bz2 icetray-55ecfddbd42a8c75e504d5b63cf9e5e1fe725399.tar.xz icetray-55ecfddbd42a8c75e504d5b63cf9e5e1fe725399.zip |
Create IceTray and DryIce for bootstrapping and dry running IceBox services
Diffstat (limited to 'icetray/dryice.cpp')
-rw-r--r-- | icetray/dryice.cpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/icetray/dryice.cpp b/icetray/dryice.cpp new file mode 100644 index 0000000..50f85cb --- /dev/null +++ b/icetray/dryice.cpp @@ -0,0 +1,49 @@ +#include "dryice.h" +#include <boost/assert.hpp> +#include <dlfcn.h> +#include <factory.h> +#include <Ice/Initialize.h> + +namespace IceTray { + typedef IceBox::Service *(* SetupFunction)(Ice::CommunicatorPtr); + + DryIce::DryIce(const Ice::StringSeq & cmdline) + { + void * i = dlsym(NULL, "createIceTrayService"); + BOOST_VERIFY(i); + auto sf = (SetupFunction)i; + BOOST_VERIFY(sf); + Ice::StringSeq args; + Ice::InitializationData id; + id.properties = Ice::createProperties(); + id.properties->setProperty("DryIce.Endpoints", "tcp -p 9002"); + id.properties->setProperty("DryIce.PoolProvider", "MockPool"); + id.properties->parseCommandLineOptions("", cmdline); + ic = Ice::initialize(args, id); + s = sf(nullptr); + s->start("DryIce", ic, {}); + } + + DryIce::~DryIce() + { + if (s) { + s->stop(); + s = NULL; + } + if (ic) { + ic->destroy(); + ic = NULL; + } + } + + DryIceClient::DryIceClient() + { + ic = Ice::initialize(); + } + + DryIceClient::~DryIceClient() + { + ic->destroy(); + } +} + |