00001 // -*- C++ -*- 00002 // 00003 //$Id: Request_Interceptor.h 81429 2008-04-24 18:49:54Z johnnyw $ 00004 00005 #ifndef TAO_RTSCHEDULING_REQUEST_INTERCEPTOR_H 00006 #define TAO_RTSCHEDULING_REQUEST_INTERCEPTOR_H 00007 00008 #include "tao/RTScheduling/rtscheduler_export.h" 00009 #include "tao/RTScheduling/RTScheduler.h" 00010 #include "ace/Atomic_Op.h" 00011 #include "tao/RTScheduling/Current.h" 00012 #include "tao/LocalObject.h" 00013 00014 #include "tao/PI_Server/PI_Server.h" 00015 00016 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00017 00018 extern ACE_Atomic_Op<TAO_SYNCH_MUTEX, long> server_guid_counter; 00019 00020 class TAO_RTScheduler_Export Client_Interceptor: 00021 public PortableInterceptor::ClientRequestInterceptor, 00022 public ::CORBA::LocalObject 00023 { 00024 public: 00025 00026 // Client_Interceptor (RTScheduling::Current_ptr current); 00027 virtual void send_request (PortableInterceptor::ClientRequestInfo_ptr ri); 00028 00029 virtual void send_poll (PortableInterceptor::ClientRequestInfo_ptr ri); 00030 00031 virtual void receive_reply (PortableInterceptor::ClientRequestInfo_ptr ri); 00032 00033 virtual void receive_exception (PortableInterceptor::ClientRequestInfo_ptr ri); 00034 00035 virtual void receive_other (PortableInterceptor::ClientRequestInfo_ptr ri); 00036 00037 virtual char* name (void); 00038 00039 virtual void destroy (void); 00040 00041 static const IOP::ServiceId SchedulingInfo; 00042 00043 }; 00044 00045 class TAO_RTScheduler_Export Server_Interceptor : 00046 public PortableInterceptor::ServerRequestInterceptor, 00047 public ::CORBA::LocalObject 00048 { 00049 00050 public: 00051 Server_Interceptor (TAO_RTScheduler_Current_ptr current); 00052 00053 virtual void receive_request_service_contexts (PortableInterceptor::ServerRequestInfo_ptr ri); 00054 00055 virtual void receive_request (PortableInterceptor::ServerRequestInfo_ptr ri); 00056 00057 virtual void send_reply (PortableInterceptor::ServerRequestInfo_ptr ri); 00058 00059 virtual void send_exception (PortableInterceptor::ServerRequestInfo_ptr ri); 00060 00061 virtual void send_other (PortableInterceptor::ServerRequestInfo_ptr ri); 00062 00063 virtual char* name (void); 00064 00065 virtual void destroy (void); 00066 00067 static const IOP::ServiceId SchedulingInfo; 00068 00069 private: 00070 TAO_RTScheduler_Current_var current_; 00071 00072 }; 00073 00074 TAO_END_VERSIONED_NAMESPACE_DECL 00075 00076 #endif /* TAO_RTSCHEDULING_REQUEST_INTERCEPTOR_H */