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
00011 #include <it_wsdl/wsdl_definitions.h>
00012 #include <it_wsdl/wsdl_extension_factory.h>
00013
00014 namespace IT_Bus
00015 {
00016 class Port;
00017 class MessageReaderWriterFactory;
00018 class ServiceBase;
00019
00020 class IT_BUS_API PortFactory
00021 {
00022 public:
00023 virtual Port *
00024 create_port(
00025 const IT_WSDL::WSDLPort & wsdl_port,
00026 ServiceBase * service = 0
00027 ) const = 0;
00028
00029 virtual void
00030 destroy_port(
00031 Port * binding_port
00032 ) const = 0;
00033
00034 virtual const IT_WSDL::WSDLExtensionFactory*
00035 get_wsdl_extension_factory(
00036 const IT_Bus::String& binding_namespace
00037 ) const = 0;
00038
00039 virtual void
00040 register_message_reader_writer_factory(
00041 const String& binding_namespace,
00042 MessageReaderWriterFactory* factory
00043 );
00044
00045 virtual void
00046 deregister_message_reader_writer_factory(
00047 const String& binding_namespace
00048 );
00049
00050 virtual MessageReaderWriterFactory*
00051 get_message_reader_writer_factory(
00052 const String& binding_namespace
00053 );
00054
00055 protected:
00056 PortFactory() {}
00057 virtual ~PortFactory();
00058
00059 private:
00060
00061 PortFactory(const PortFactory&);
00062 void operator=(const PortFactory&);
00063 };
00064 }
00065
00066 #endif