summaryrefslogtreecommitdiff
path: root/rb/src/IceRuby/Communicator.cpp
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2006-10-30 22:55:59 +0000
committerBernard Normier <bernard@zeroc.com>2006-10-30 22:55:59 +0000
commit662d72681a5b4edc464b7642627c9ba0407c5afc (patch)
tree84929d458ccf7589b44fa842dfb358da510a62b7 /rb/src/IceRuby/Communicator.cpp
parentRemoved defaultContext from initData (diff)
downloadice-662d72681a5b4edc464b7642627c9ba0407c5afc.tar.bz2
ice-662d72681a5b4edc464b7642627c9ba0407c5afc.tar.xz
ice-662d72681a5b4edc464b7642627c9ba0407c5afc.zip
Implicit context support
Diffstat (limited to 'rb/src/IceRuby/Communicator.cpp')
-rw-r--r--rb/src/IceRuby/Communicator.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/rb/src/IceRuby/Communicator.cpp b/rb/src/IceRuby/Communicator.cpp
index b9f9f497019..cca120db13c 100644
--- a/rb/src/IceRuby/Communicator.cpp
+++ b/rb/src/IceRuby/Communicator.cpp
@@ -8,6 +8,7 @@
// **********************************************************************
#include <Communicator.h>
+#include <ImplicitContext.h>
#include <Logger.h>
#include <ObjectFactory.h>
#include <Properties.h>
@@ -349,6 +350,40 @@ IceRuby_Communicator_getDefaultContext(VALUE self)
extern "C"
VALUE
+IceRuby_Communicator_setDefaultContext(VALUE self, VALUE context)
+{
+ ICE_RUBY_TRY
+ {
+ Ice::Context ctx;
+ if(!hashToContext(context, ctx))
+ {
+ throw RubyException(rb_eTypeError, "argument must be a hash");
+ }
+
+ Ice::CommunicatorPtr p = getCommunicator(self);
+ p->setDefaultContext(ctx);
+ }
+ ICE_RUBY_CATCH
+ return Qnil;
+}
+
+extern "C"
+VALUE
+IceRuby_Communicator_getImplicitContext(VALUE self)
+{
+ ICE_RUBY_TRY
+ {
+ Ice::CommunicatorPtr p = getCommunicator(self);
+ Ice::ImplicitContextPtr implicitContext = p->getImplicitContext();
+ return createImplicitContext(implicitContext);
+ }
+ ICE_RUBY_CATCH
+ return Qnil;
+}
+
+
+extern "C"
+VALUE
IceRuby_Communicator_getProperties(VALUE self)
{
ICE_RUBY_TRY
@@ -485,6 +520,8 @@ IceRuby::initCommunicator(VALUE iceModule)
rb_define_method(_communicatorClass, "addObjectFactory", CAST_METHOD(IceRuby_Communicator_addObjectFactory), 2);
rb_define_method(_communicatorClass, "findObjectFactory", CAST_METHOD(IceRuby_Communicator_findObjectFactory), 1);
rb_define_method(_communicatorClass, "getDefaultContext", CAST_METHOD(IceRuby_Communicator_getDefaultContext), 0);
+ rb_define_method(_communicatorClass, "setDefaultContext", CAST_METHOD(IceRuby_Communicator_setDefaultContext), 1);
+ rb_define_method(_communicatorClass, "getImplicitContext", CAST_METHOD(IceRuby_Communicator_getImplicitContext), 0);
rb_define_method(_communicatorClass, "getProperties", CAST_METHOD(IceRuby_Communicator_getProperties), 0);
rb_define_method(_communicatorClass, "getLogger", CAST_METHOD(IceRuby_Communicator_getLogger), 0);
rb_define_method(_communicatorClass, "getDefaultRouter", CAST_METHOD(IceRuby_Communicator_getDefaultRouter), 0);