diff options
Diffstat (limited to 'TAO/tests/RTCORBA/Client_Propagated/interceptors.cpp')
-rw-r--r-- | TAO/tests/RTCORBA/Client_Propagated/interceptors.cpp | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/TAO/tests/RTCORBA/Client_Propagated/interceptors.cpp b/TAO/tests/RTCORBA/Client_Propagated/interceptors.cpp new file mode 100644 index 00000000000..725288bf2f1 --- /dev/null +++ b/TAO/tests/RTCORBA/Client_Propagated/interceptors.cpp @@ -0,0 +1,106 @@ +// $Id$ + +#include "interceptors.h" +#include "tao/OctetSeqC.h" +#include "ace/Log_Msg.h" + +ACE_RCSID (Client_Propagated, + interceptors, + "$Id$") + +Client_Request_Interceptor:: +Client_Request_Interceptor (const char *id) + : myname_ ("Client_Request_Interceptor"), + orb_id_ (CORBA::string_dup (id)) +{ +} + +Client_Request_Interceptor::~Client_Request_Interceptor (void) +{ +} + +char * +Client_Request_Interceptor::name (void) +{ + return CORBA::string_dup (this->myname_); +} + +void +Client_Request_Interceptor::destroy (void) +{ +} + +void +Client_Request_Interceptor::send_poll ( + PortableInterceptor::ClientRequestInfo_ptr) +{ + // Do Nothing +} + +void +Client_Request_Interceptor::send_request ( + PortableInterceptor::ClientRequestInfo_ptr) +{ + // Do Nothing +} + +void +Client_Request_Interceptor::receive_reply ( + PortableInterceptor::ClientRequestInfo_ptr ri) +{ + + try + { + // Try to get the RTCorbaPriority context. If its not there, + // report the fact via an exception. + IOP::ServiceContext_var sc = + ri->get_reply_service_context (IOP::RTCorbaPriority); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Caught exception:"); + + ACE_DEBUG ((LM_DEBUG, "EXCEPTION was most likely caused by the lack " + "of an IOP::RTCorbaPriority context in the reply.\n")); + throw; + } + +} + +void +Client_Request_Interceptor::receive_other ( + PortableInterceptor::ClientRequestInfo_ptr) +{ +} + +void +Client_Request_Interceptor::receive_exception ( + PortableInterceptor::ClientRequestInfo_ptr ri) +{ + + if (CORBA::is_nil (this->orb_.in ())) + { + int argc = 0; + this->orb_ = CORBA::ORB_init (argc, 0, + this->orb_id_.in ()); + } + + CORBA::String_var operation = ri->operation (); + + CORBA::Object_var target = ri->target (); + + CORBA::String_var ior = + this->orb_->object_to_string (target.in ()); + + ACE_DEBUG ((LM_DEBUG, + "%s.received_exception " + "from \"%s\" on object: %s\n", + this->myname_, + operation.in (), + ior.in ())); + + // Try to get the RTCorbaPriority context. If its not there, + // report the fact via an exception. + IOP::ServiceContext_var sc = + ri->get_reply_service_context (IOP::RTCorbaPriority); +} |