00001 #ifndef _IT_BUS_PORT_FACTORY_H_
00002 #define _IT_BUS_PORT_FACTORY_H_
00003
00004
00005
00006
00007 #include <it_bus/api_defines.h>
00008 #include <it_bus/types.h>
00009 #include <it_bus/qname.h>
00010 #ifndef IT_MINIMISE_INCLUDES
00011 #include <it_wsdl/wsdl_definitions.h>
00012 #include <it_wsdl/wsdl_extension_factory.h>
00013 #endif
00014
00015 namespace IT_WSDL
00016 {
00017 class WSDLPort;
00018 class WSDLExtensionFactory;
00019 }
00020
00021 namespace IT_Bus
00022 {
00023 class Port;
00024 class MessageReaderWriterFactory;
00025 class ServiceBase;
00026
00027 class IT_BUS_API PortFactory
00028 {
00029 public:
00030 virtual Port *
00031 create_port(
00032 const IT_WSDL::WSDLPort & wsdl_port,
00033 ServiceBase * service = 0
00034 ) const = 0;
00035
00036 virtual void
00037 destroy_port(
00038 Port * binding_port
00039 ) const = 0;
00040
00041 virtual const IT_WSDL::WSDLExtensionFactory*
00042 get_wsdl_extension_factory(
00043 const IT_Bus::String& binding_namespace
00044 ) const = 0;
00045
00046 virtual void
00047 register_message_reader_writer_factory(
00048 const String& binding_namespace,
00049 MessageReaderWriterFactory* factory
00050 );
00051
00052 virtual void
00053 deregister_message_reader_writer_factory(
00054 const String& binding_namespace
00055 );
00056
00057 virtual MessageReaderWriterFactory*
00058 get_message_reader_writer_factory(
00059 const String& binding_namespace
00060 );
00061
00062 protected:
00063 PortFactory() {}
00064 virtual ~PortFactory();
00065
00066 private:
00067
00068 PortFactory(const PortFactory&);
00069 void operator=(const PortFactory&);
00070 };
00071 }
00072
00073 #endif