summaryrefslogtreecommitdiff
path: root/icetray/dryice.cpp
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2015-12-23 20:01:01 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2015-12-23 20:01:01 +0000
commit55ecfddbd42a8c75e504d5b63cf9e5e1fe725399 (patch)
tree18b3a9fee78390a87dcfa58a20ee813db62b80d2 /icetray/dryice.cpp
parentSwitch lib64 references for native ones (diff)
downloadicetray-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.cpp49
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();
+ }
+}
+