summaryrefslogtreecommitdiff
path: root/TAO/tao/ORB.cpp
diff options
context:
space:
mode:
authorvzykov <vzykov@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2010-02-23 09:57:24 +0000
committervzykov <vzykov@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2010-02-23 09:57:24 +0000
commit18bebcede370ca7a3f4ff81d165120a4ec458911 (patch)
tree82b5c7dca2e4e78429408c7b9e6cf4353ac6e1ab /TAO/tao/ORB.cpp
parent5cbc08e3689e38d1a9a8af2e2dbd0404ebe49801 (diff)
downloadATCD-18bebcede370ca7a3f4ff81d165120a4ec458911.tar.gz
Tue Feb 23 09:46:57 UTC 2010 Vladimir Zykov <vladimir.zykov@prismtech.com>
* tests/Bug_3827_Regression/test.cpp: * tests/Bug_3827_Regression/Message.idl: * tests/Bug_3827_Regression/run_test.pl: * tests/Bug_3827_Regression/README: * tests/Bug_3827_Regression/Bug_3827_Regression.mpc: * tao/ORB_Core.cpp: * tao/ORB.cpp: * tao/ORB_Core.h: Added a test for bug#3827 and fixed it. Now access or changes to valuetype_adapter_ in ORB_Core is protected by a lock. * tests/Bug_3826_Regression/orb_svc.conf: * tests/Bug_3826_Regression/server.cpp: * tests/Bug_3826_Regression/README: * tests/Bug_3826_Regression/Bug_3826_Regression.mpc: * tests/Bug_3826_Regression/run_test.pl: * tao/TAO_Internal.cpp: Added a test for bug#3826 and fixed it. If the first ORB in created with -ORBGestalt LOCAL it will have a local configuration and this configuration will not leak into any ORBs created afterwards. * bin/tao_orb_tests.lst: Scheduled tests for bug#3826 and bug#3827 to run in the nightly builds.
Diffstat (limited to 'TAO/tao/ORB.cpp')
-rw-r--r--TAO/tao/ORB.cpp37
1 files changed, 6 insertions, 31 deletions
diff --git a/TAO/tao/ORB.cpp b/TAO/tao/ORB.cpp
index 7dca097ea4e..3f9023adf5a 100644
--- a/TAO/tao/ORB.cpp
+++ b/TAO/tao/ORB.cpp
@@ -1722,25 +1722,9 @@ CORBA::ValueFactory
CORBA::ORB::register_value_factory (const char *repository_id,
CORBA::ValueFactory factory)
{
- TAO_Valuetype_Adapter *vta = this->orb_core ()->valuetype_adapter ();
-
- if (vta)
- {
- int const result = vta->vf_map_rebind (repository_id, factory);
-
- if (result == 0) // No previous factory found
- {
- return 0;
- }
-
- if (result == -1)
- {
- // Error on bind.
- throw ::CORBA::MARSHAL ();
- }
- }
+ this->check_shutdown ();
- return factory; // previous factory was found
+ return this->orb_core_->register_value_factory (repository_id, factory);
}
#endif
@@ -1748,13 +1732,9 @@ CORBA::ORB::register_value_factory (const char *repository_id,
void
CORBA::ORB::unregister_value_factory (const char *repository_id)
{
- TAO_Valuetype_Adapter *vta = this->orb_core ()->valuetype_adapter ();
+ this->check_shutdown ();
- if (vta)
- {
- // Dont care whther it was successful or not!
- (void) vta->vf_map_unbind (repository_id);
- }
+ this->orb_core_->unregister_value_factory (repository_id);
}
#endif
@@ -1762,14 +1742,9 @@ CORBA::ORB::unregister_value_factory (const char *repository_id)
CORBA::ValueFactory
CORBA::ORB::lookup_value_factory (const char *repository_id)
{
- TAO_Valuetype_Adapter *vta = this->orb_core ()->valuetype_adapter ();
-
- if (vta)
- {
- return vta->vf_map_find (repository_id);
- }
+ this->check_shutdown ();
- return 0;
+ return this->orb_core_->lookup_value_factory (repository_id);
}
#endif