diff options
author | Bernard Normier <bernard@zeroc.com> | 2006-10-30 22:55:59 +0000 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2006-10-30 22:55:59 +0000 |
commit | 662d72681a5b4edc464b7642627c9ba0407c5afc (patch) | |
tree | 84929d458ccf7589b44fa842dfb358da510a62b7 /rb/src/IceRuby/Communicator.cpp | |
parent | Removed defaultContext from initData (diff) | |
download | ice-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.cpp | 37 |
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); |