00001 #ifndef _IT_BUS_PDK_CLIENT_SERVICE_H_
00002 #define _IT_BUS_PDK_CLIENT_SERVICE_H_
00003
00004
00005
00006
00007 #include <it_bus/bus.h>
00008 #include <it_bus/client_service.h>
00009 #include <it_ts/mutex.h>
00010 #include <it_ts/condition.h>
00011 #include <it_cal/auto_ptr.h>
00012
00013
00014 namespace IT_Bus {
00015
00016 class ServiceHelper;
00017
00018 class IT_BUS_API PDKClientService : public ClientService
00019 {
00020
00021 public :
00022
00023 PDKClientService(
00024 Bus_ptr bus,
00025 const IT_WSDL::WSDLService& wsdl_service
00026 ) throw((ServiceException));
00027
00028 virtual ~PDKClientService();
00029
00030
00031
00032 virtual Reference&
00033 get_reference();
00034
00035 virtual const Reference&
00036 get_reference() const;
00037
00038 virtual void
00039 get_endpoint_reference(
00040 WS_Addressing::EndpointReferenceType &
00041 );
00042
00043 virtual Port*
00044 get_port(
00045 const IT_WSDL::WSDLPort& wsdl_port
00046 ) throw((ServiceException));
00047
00048 virtual const IT_WSDL::WSDLDefinitions&
00049 get_wsdl_definitions() const;
00050
00051 virtual const QName&
00052 get_name() const;
00053
00054 virtual const IT_WSDL::WSDLService&
00055 get_wsdl_service() const;
00056
00057 virtual void
00058 activate();
00059
00060 virtual void
00061 deactivate();
00062
00063 virtual void
00064 wait();
00065
00066
00067
00068 virtual void
00069 invoke(
00070 ClientOperation& client_operation
00071 );
00072
00073 virtual Logging::ServiceNameRetriever*
00074 get_snr();
00075
00076 protected :
00077
00078 void
00079 start_operation();
00080
00081 void
00082 stop_operation();
00083
00084
00085 private:
00086 PDKClientService& operator=(const PDKClientService& rhs);
00087 PDKClientService(const PDKClientService& rhs);
00088
00089 Logging::ServiceNameRetriever* m_snr;
00090 IT_AutoPtr<ServiceHelper> m_helper;
00091 Boolean m_deactivated;
00092 Int m_op_counter;
00093 IT_Condition m_op_completed;
00094 IT_Mutex m_op_mutex;
00095
00096 };
00097
00098 }
00099
00100 #endif