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