diff options
Diffstat (limited to 'ruby/src/IceRuby/Communicator.cpp')
-rw-r--r-- | ruby/src/IceRuby/Communicator.cpp | 61 |
1 files changed, 24 insertions, 37 deletions
diff --git a/ruby/src/IceRuby/Communicator.cpp b/ruby/src/IceRuby/Communicator.cpp index 12d1205f55c..f67f490a560 100644 --- a/ruby/src/IceRuby/Communicator.cpp +++ b/ruby/src/IceRuby/Communicator.cpp @@ -10,11 +10,11 @@ #include <Communicator.h> #include <ImplicitContext.h> #include <Logger.h> -#include <ObjectFactory.h> #include <Properties.h> #include <Proxy.h> #include <Types.h> #include <Util.h> +#include <ValueFactoryManager.h> #include <IceUtil/DisableWarnings.h> #include <Ice/Communicator.h> #include <Ice/Initialize.h> @@ -38,9 +38,9 @@ IceRuby_Communicator_mark(Ice::CommunicatorPtr* p) assert(p); try { - ObjectFactoryPtr pof = ObjectFactoryPtr::dynamicCast((*p)->findObjectFactory("")); - assert(pof); - pof->mark(); + ValueFactoryManagerPtr vfm = ValueFactoryManagerPtr::dynamicCast((*p)->getValueFactoryManager()); + assert(vfm); + vfm->markSelf(); } catch(const Ice::CommunicatorDestroyedException&) { @@ -129,6 +129,7 @@ IceRuby_initialize(int argc, VALUE* argv, VALUE self) seq.insert(seq.begin(), getString(progName)); data.compactIdResolver = new IdResolver; + data.valueFactoryManager = new ValueFactoryManager; if(hasArgs) { @@ -206,9 +207,6 @@ IceRuby_initialize(int argc, VALUE* argv, VALUE self) } delete[] av; - ObjectFactoryPtr factory = new ObjectFactory; - communicator->addObjectFactory(factory, ""); - VALUE result = Data_Wrap_Struct(_communicatorClass, IceRuby_Communicator_mark, IceRuby_Communicator_free, new Ice::CommunicatorPtr(communicator)); @@ -229,12 +227,19 @@ extern "C" VALUE IceRuby_Communicator_destroy(VALUE self) { + Ice::CommunicatorPtr p = getCommunicator(self); + + ValueFactoryManagerPtr vfm = ValueFactoryManagerPtr::dynamicCast(p->getValueFactoryManager()); + assert(vfm); + ICE_RUBY_TRY { - Ice::CommunicatorPtr p = getCommunicator(self); p->destroy(); } ICE_RUBY_CATCH + + vfm->destroy(); + return Qnil; } @@ -387,26 +392,10 @@ IceRuby_Communicator_addObjectFactory(VALUE self, VALUE factory, VALUE id) ICE_RUBY_TRY { Ice::CommunicatorPtr p = getCommunicator(self); - ObjectFactoryPtr pof = ObjectFactoryPtr::dynamicCast(p->findObjectFactory("")); - assert(pof); + ValueFactoryManagerPtr vfm = ValueFactoryManagerPtr::dynamicCast(p->getValueFactoryManager()); + assert(vfm); string idstr = getString(id); - pof->addObjectFactory(factory, idstr); - } - ICE_RUBY_CATCH - return Qnil; -} - -extern "C" -VALUE -IceRuby_Communicator_addValueFactory(VALUE self, VALUE factory, VALUE id) -{ - ICE_RUBY_TRY - { - Ice::CommunicatorPtr p = getCommunicator(self); - ObjectFactoryPtr pof = ObjectFactoryPtr::dynamicCast(p->findObjectFactory("")); - assert(pof); - string idstr = getString(id); - pof->addValueFactory(factory, idstr); + vfm->addObjectFactory(factory, idstr); } ICE_RUBY_CATCH return Qnil; @@ -419,10 +408,10 @@ IceRuby_Communicator_findObjectFactory(VALUE self, VALUE id) ICE_RUBY_TRY { Ice::CommunicatorPtr p = getCommunicator(self); - ObjectFactoryPtr pof = ObjectFactoryPtr::dynamicCast(p->findObjectFactory("")); - assert(pof); + ValueFactoryManagerPtr vfm = ValueFactoryManagerPtr::dynamicCast(p->getValueFactoryManager()); + assert(vfm); string idstr = getString(id); - return pof->findObjectFactory(idstr); + return vfm->findObjectFactory(idstr); } ICE_RUBY_CATCH return Qnil; @@ -430,15 +419,14 @@ IceRuby_Communicator_findObjectFactory(VALUE self, VALUE id) extern "C" VALUE -IceRuby_Communicator_findValueFactory(VALUE self, VALUE id) +IceRuby_Communicator_getValueFactoryManager(VALUE self) { ICE_RUBY_TRY { Ice::CommunicatorPtr p = getCommunicator(self); - ObjectFactoryPtr pof = ObjectFactoryPtr::dynamicCast(p->findObjectFactory("")); - assert(pof); - string idstr = getString(id); - return pof->findValueFactory(idstr); + ValueFactoryManagerPtr vfm = ValueFactoryManagerPtr::dynamicCast(p->getValueFactoryManager()); + assert(vfm); + return vfm->getObject(); } ICE_RUBY_CATCH return Qnil; @@ -599,8 +587,7 @@ IceRuby::initCommunicator(VALUE iceModule) rb_define_method(_communicatorClass, "identityToString", CAST_METHOD(IceRuby_Communicator_identityToString), 1); 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, "addValueFactory", CAST_METHOD(IceRuby_Communicator_addValueFactory), 2); - rb_define_method(_communicatorClass, "findValueFactory", CAST_METHOD(IceRuby_Communicator_findValueFactory), 1); + rb_define_method(_communicatorClass, "getValueFactoryManager", CAST_METHOD(IceRuby_Communicator_getValueFactoryManager), 0); 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); |