summaryrefslogtreecommitdiff
path: root/TAO/tao/ORB_Core.i
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/ORB_Core.i')
-rw-r--r--TAO/tao/ORB_Core.i29
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)