00001 #ifndef _IT_BUS_PDK_PART_MANAGER_H_
00002 #define _IT_BUS_PDK_PART_MANAGER_H_
00003
00004
00005
00006
00007 #include <it_bus_pdk/unknown_type_exception.h>
00008 #include <it_bus/user_fault_exception.h>
00009 #include <it_bus/part_list.h>
00010
00011 namespace IT_WSDL
00012 {
00013 class WSDLOperation;
00014 }
00015
00016 namespace IT_Bus
00017 {
00018 class ReadableMessage;
00019 class WritableMessage;
00020 class ClientOperation;
00021 class ServerOperation;
00022 class AnyType;
00023 class Bus;
00024 class AnyTypeFactory;
00025
00095 class IT_BUS_API PartManager
00096 {
00097 public:
00111 PartManager(
00112 AnyTypeFactory* factory,
00113 const IT_WSDL::WSDLOperation& operation,
00114 bool do_unwrap = false
00115 ) IT_THROW_DECL((UnknownTypeException));
00116
00130 PartManager(
00131 Bus& bus,
00132 const IT_WSDL::WSDLOperation& operation,
00133 bool do_unwrap = false
00134 ) IT_THROW_DECL((UnknownTypeException));
00135
00139 virtual ~PartManager() IT_THROW_DECL(());
00140
00141
00142
00143
00144
00145
00146
00147 void add_input_parts(
00148 ReadableMessage& message
00149 ) IT_THROW_DECL((UnknownTypeException));
00150
00157 void add_output_parts(
00158 ReadableMessage& message
00159 ) IT_THROW_DECL((UnknownTypeException));
00160
00161
00162
00163
00164
00165
00166
00167 void add_input_parts(
00168 WritableMessage& message
00169 ) IT_THROW_DECL((UnknownTypeException));
00170
00177 void add_output_parts(
00178 WritableMessage& message
00179 ) IT_THROW_DECL((UnknownTypeException));
00180
00188 void add_parts(
00189 ClientOperation& operation
00190 ) IT_THROW_DECL((UnknownTypeException));
00191
00199 void add_parts(
00200 ServerOperation& operation
00201 ) IT_THROW_DECL((UnknownTypeException));
00202
00209 PartList& get_inputs();
00210
00217 PartList& get_outputs();
00218
00229 void
00230 throw_if_exception(
00231 ClientOperation& operation
00232 ) IT_THROW_DECL((UnknownTypeException, UserFaultException));
00233
00240 const AnyTypeFactory&
00241 get_any_type_factory() const;
00242
00243 private:
00244 void
00245 initialize();
00246
00247 void
00248 parts_initialize();
00249
00250 void
00251 unwrap_initialize();
00252
00253 AnyType*
00254 find_input_part(
00255 const String& part_name
00256 ) IT_THROW_DECL((UnknownTypeException));
00257
00258 const IT_WSDL::WSDLOperation& m_wsdl_operation;
00259 AnyTypeFactory* m_factory;
00260 PartList m_inputs;
00261 PartList m_outputs;
00262 IT_Bus::QName m_input_wrapper_element_qname;
00263 IT_Bus::QName m_output_wrapper_element_qname;
00264 bool m_do_unwrap;
00265 bool m_is_initialized;
00266
00267
00268 PartManager(const PartManager&);
00269 void operator=(const PartManager&);
00270 };
00271 }
00272
00273
00274 #endif