diff options
Diffstat (limited to 'TAO/tao/ORB_Core.i')
-rw-r--r-- | TAO/tao/ORB_Core.i | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/TAO/tao/ORB_Core.i b/TAO/tao/ORB_Core.i index f02c798655c..abfba4e9896 100644 --- a/TAO/tao/ORB_Core.i +++ b/TAO/tao/ORB_Core.i @@ -256,6 +256,29 @@ TAO_ORB_Core::orb_params(void) return &(this->orb_params_); } + +ACE_INLINE TAO_Codeset_Manager * +TAO_ORB_Core::codeset_manager() +{ + if (this->orb_params()->negotiate_codesets() == 0) + return 0; + if (this->codeset_manager_ == 0) + { + // This causes a factory to be loaded which will call + // the codeset_manager setter in this thread. + this->load_codeset_manager(); + if (this->codeset_manager_ == 0) + this->orb_params()->negotiate_codesets(false); + } + return this->codeset_manager_; +} + +ACE_INLINE void +TAO_ORB_Core::codeset_manager (TAO_Codeset_Manager *tcm) +{ + this->codeset_manager_ = tcm; +}; + #define TAO_OC_RETRIEVE(member) \ ((this->member##_ == 0) \ ? (this->member##_ = this->resource_factory ()->get_##member ()) \ @@ -273,12 +296,6 @@ TAO_ORB_Core::parser_registry (void) return &this->parser_registry_; } -ACE_INLINE TAO_Codeset_Manager * -TAO_ORB_Core::codeset_manager() -{ - return this->codeset_manager_; -} - #undef TAO_OC_RETRIEVE #if (TAO_HAS_CORBA_MESSAGING == 1) |