diff options
Diffstat (limited to 'TAO/tests/Portable_Interceptors/PICurrent/ClientORBInitializer.cpp')
-rw-r--r-- | TAO/tests/Portable_Interceptors/PICurrent/ClientORBInitializer.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/TAO/tests/Portable_Interceptors/PICurrent/ClientORBInitializer.cpp b/TAO/tests/Portable_Interceptors/PICurrent/ClientORBInitializer.cpp new file mode 100644 index 00000000000..f07af1f187a --- /dev/null +++ b/TAO/tests/Portable_Interceptors/PICurrent/ClientORBInitializer.cpp @@ -0,0 +1,59 @@ +// -*- C++ -*- + +#include "ClientORBInitializer.h" +#include "ClientRequestInterceptor.h" + +#include "tao/ORB_Constants.h" + +#include "ace/Log_Msg.h" + +ACE_RCSID (PICurrent, + ClientORBInitializer, + "$Id$") + + +PortableInterceptor::SlotId slot_id = 2093843211; + + +void +ClientORBInitializer::pre_init ( + PortableInterceptor::ORBInitInfo_ptr /* info */ + ) +{ +} + +void +ClientORBInitializer::post_init ( + PortableInterceptor::ORBInitInfo_ptr info) +{ + CORBA::Object_var obj = + info->resolve_initial_references ("PICurrent"); + + PortableInterceptor::Current_var pi_current = + PortableInterceptor::Current::_narrow (obj.in ()); + + if (CORBA::is_nil (pi_current.in ())) + { + ACE_ERROR ((LM_ERROR, + "(%P|%t) ERROR: Could not resolve PICurrent object.\n")); + + throw CORBA::INTERNAL (); + } + + ::slot_id = info->allocate_slot_id (); + + PortableInterceptor::ClientRequestInterceptor_ptr foo; + ACE_NEW_THROW_EX (foo, + ClientRequestInterceptor (::slot_id, + pi_current.in ()), + CORBA::NO_MEMORY ( + CORBA::SystemException::_tao_minor_code ( + TAO::VMCID, + ENOMEM), + CORBA::COMPLETED_NO)); + + PortableInterceptor::ClientRequestInterceptor_var interceptor = + foo; + + info->add_client_request_interceptor (interceptor.in ()); +} |