summaryrefslogtreecommitdiff
path: root/icetray/dryice
diff options
context:
space:
mode:
Diffstat (limited to 'icetray/dryice')
-rw-r--r--icetray/dryice/dryice.cpp9
-rw-r--r--icetray/dryice/dryice.h2
2 files changed, 11 insertions, 0 deletions
diff --git a/icetray/dryice/dryice.cpp b/icetray/dryice/dryice.cpp
index cdb11e1..744e0a6 100644
--- a/icetray/dryice/dryice.cpp
+++ b/icetray/dryice/dryice.cpp
@@ -3,6 +3,7 @@
#include <dlfcn.h>
#include <factory.h>
#include <Ice/Initialize.h>
+#include <Ice/ObjectAdapter.h>
namespace IceTray {
typedef IceTray::Service *(* SetupFunction)(Ice::CommunicatorPtr);
@@ -41,6 +42,14 @@ namespace IceTray {
}
}
+ void
+ DryIce::replace(const std::string & name, Ice::ObjectPtr replacement)
+ {
+ auto id = ic->stringToIdentity(name);
+ s->adp->remove(id);
+ s->adp->add(replacement, id);
+ }
+
DryIceClient::DryIceClient()
{
}
diff --git a/icetray/dryice/dryice.h b/icetray/dryice/dryice.h
index 998f76d..bd8443f 100644
--- a/icetray/dryice/dryice.h
+++ b/icetray/dryice/dryice.h
@@ -20,6 +20,8 @@ namespace IceTray {
friend class DryIceClient;
static DryIce * currentDryIce;
+ void replace(const std::string &, Ice::ObjectPtr);
+
Ice::CommunicatorPtr ic;
IceTray::ServicePtr s;
};