diff options
Diffstat (limited to 'TAO/tests/Param_Test/objref.cpp')
-rw-r--r-- | TAO/tests/Param_Test/objref.cpp | 162 |
1 files changed, 35 insertions, 127 deletions
diff --git a/TAO/tests/Param_Test/objref.cpp b/TAO/tests/Param_Test/objref.cpp index 65b20584a33..9ef81ab4216 100644 --- a/TAO/tests/Param_Test/objref.cpp +++ b/TAO/tests/Param_Test/objref.cpp @@ -26,11 +26,7 @@ ACE_RCSID(Param_Test, objref, "$Id$") // ************************************************************************ Test_ObjRef::Test_ObjRef (void) - : opname_ (CORBA::string_dup ("test_objref")), - in_courier (new CORBA::Object_ptr), - inout_courier (new CORBA::Object_ptr), - out_courier (new CORBA::Object_ptr), - ret_courier (new CORBA::Object_ptr) + : opname_ (CORBA::string_dup ("test_objref")) { } @@ -38,11 +34,6 @@ Test_ObjRef::~Test_ObjRef (void) { CORBA::string_free (this->opname_); this->opname_ = 0; - - delete this->in_courier; - delete this->inout_courier; - delete this->out_courier; - delete this->ret_courier; } const char * @@ -55,7 +46,30 @@ void Test_ObjRef::dii_req_invoke (CORBA::Request *req, CORBA::Environment &ACE_TRY_ENV) { + req->add_in_arg ("s1") <<= this->in_.in (); + req->add_inout_arg ("s2") <<= this->inout_.in (); + req->add_out_arg ("s3") <<= this->out_.in (); + + req->set_return_type (_tc_Coffee); + req->invoke (ACE_TRY_ENV); + ACE_CHECK; + + Coffee_ptr tmp; + req->return_value () >>= tmp; + this->ret_ = Coffee::_duplicate (tmp); + + CORBA::NamedValue_ptr o2 = + req->arguments ()->item (1, ACE_TRY_ENV); + ACE_CHECK; + *o2->value () >>= tmp; + this->inout_ = Coffee::_duplicate (tmp); + + CORBA::NamedValue_ptr o3 = + req->arguments ()->item (2, ACE_TRY_ENV); + ACE_CHECK; + *o3->value () >>= tmp; + this->out_ = Coffee::_duplicate (tmp); } static const char *Coffee_Flavor [] = { @@ -98,15 +112,6 @@ Test_ObjRef::init_parameters (Param_Test_ptr objref, this->out_ = Coffee::_nil (); this->ret_ = Coffee::_nil (); - // DII - *this->in_courier = ACE_dynamic_cast (CORBA::Object_ptr, - this->in_.in ()); - *this->inout_courier = ACE_dynamic_cast (CORBA::Object_ptr, - this->inout_.in ()); - *this->out_courier = ACE_dynamic_cast (CORBA::Object_ptr, - this->out_.in ()); - *this->ret_courier = ACE_dynamic_cast (CORBA::Object_ptr, - this->ret_.in ()); return 0; } ACE_CATCHANY @@ -147,12 +152,6 @@ Test_ObjRef::reset_parameters (void) this->out_ = Coffee::_nil (); this->ret_ = Coffee::_nil (); - // DII - *this->in_courier = ACE_dynamic_cast (CORBA::Object_ptr, - this->in_.in ()); - *this->inout_courier = ACE_dynamic_cast (CORBA::Object_ptr, - this->inout_.in ()); - return 0; } @@ -182,101 +181,38 @@ Test_ObjRef::run_sii_test (Param_Test_ptr objref, return -1; } -int -Test_ObjRef::add_args (CORBA::NVList_ptr param_list, - CORBA::NVList_ptr retval, - CORBA::Environment &ACE_TRY_ENV) -{ - ACE_TRY - { - CORBA::Any in_arg (_tc_Coffee, - this->in_courier, - 0); - - CORBA::Any inout_arg (_tc_Coffee, - this->inout_courier, - 0); - - CORBA::Any out_arg (_tc_Coffee, - this->out_courier, - 0); - - // Add parameters. - param_list->add_value ("o1", - in_arg, - CORBA::ARG_IN, - ACE_TRY_ENV); - ACE_TRY_CHECK; - - param_list->add_value ("o2", - inout_arg, - CORBA::ARG_INOUT, - ACE_TRY_ENV); - ACE_TRY_CHECK; - - param_list->add_value ("o3", - out_arg, - CORBA::ARG_OUT, - ACE_TRY_ENV); - ACE_TRY_CHECK; - - // Add return value. - CORBA::NamedValue *item = retval->item (0, - ACE_TRY_ENV); - ACE_TRY_CHECK; - - item->value ()->replace (_tc_Coffee, - this->ret_courier, - 0, // does not own - ACE_TRY_ENV); - ACE_TRY_CHECK; - - return 0; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "Test_ObjRef::add_args\n"); - - } - ACE_ENDTRY; - return -1; -} - CORBA::Boolean Test_ObjRef::check_validity (void) { // Environemnt variable ACE_DECLARE_NEW_CORBA_ENV; - //CORBA::Environment env; - - Coffee::Desc_var ret_desc; - const char *in = 0; - const char *out = 0; - const char *inout = 0; - ACE_TRY { + if (CORBA::is_nil (this->in_.in ()) + || CORBA::is_nil (this->inout_.in ()) + || CORBA::is_nil (this->out_.in ()) + || CORBA::is_nil (this->ret_.in ())) + return 0; Coffee::Desc_var in_desc = this->in_->description (ACE_TRY_ENV); ACE_TRY_CHECK; - in = in_desc->name.in (); + const char *in = in_desc->name.in (); Coffee::Desc_var inout_desc = this->inout_->description (ACE_TRY_ENV); ACE_TRY_CHECK; - inout = inout_desc->name.in (); + const char *inout = inout_desc->name.in (); Coffee::Desc_var out_desc = this->out_->description (ACE_TRY_ENV); ACE_TRY_CHECK; - out = out_desc->name.in (); + const char *out = out_desc->name.in (); - ret_desc = this->out_->description (ACE_TRY_ENV); + Coffee::Desc_var ret_desc = this->out_->description (ACE_TRY_ENV); ACE_TRY_CHECK; const char* ret = ret_desc->name.in (); @@ -298,37 +234,9 @@ Test_ObjRef::check_validity (void) } CORBA::Boolean -Test_ObjRef::check_validity (CORBA::Request_ptr /*req*/) +Test_ObjRef::check_validity (CORBA::Request_ptr) { - //ACE_UNUSED_ARG (req); - //CORBA::Environment env; - ACE_DECLARE_NEW_CORBA_ENV; - - // Narrow each checked variable into its _var before - // calling check_validity(). - - ACE_TRY - { - this->inout_ = Coffee::_narrow (*this->inout_courier, - ACE_TRY_ENV); - ACE_TRY_CHECK; - - this->out_ = Coffee::_narrow (*this->out_courier, - ACE_TRY_ENV); - ACE_TRY_CHECK; - - this->ret_ = Coffee::_narrow (*this->ret_courier, - ACE_TRY_ENV); - ACE_TRY_CHECK; - - return this->check_validity (); - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "_narrow from DII result"); - } - ACE_ENDTRY; - return 0; + return this->check_validity (); } void |