00001 #ifndef _TRANSPORT_READABLE_MESSAGE_H_
00002 #define _TRANSPORT_READABLE_MESSAGE_H_
00003
00004
00005
00006
00007
00008 #include <it_dsa/vector.h>
00009 #include <it_bus/readable_message.h>
00010 #include <it_bus/binary_buffer.h>
00011
00012 namespace IT_WSDL
00013 {
00014 class WSDLOperation;
00015 class WSDLDefinitions;
00016 }
00017
00018 namespace IT_Bus
00019 {
00020 class MessageReader;
00021
00022 class IT_BUS_API TransportReadableMessage : public ReadableMessage
00023 {
00024 public:
00025
00026 TransportReadableMessage(
00027 MessageType message_type,
00028 MessageReader * message_reader,
00029 const IT_WSDL::WSDLOperation& wsdl_operation
00030 );
00031
00032 virtual
00033 ~TransportReadableMessage();
00034
00035 void
00036 read();
00037
00038 virtual void
00039 read(
00040 const String& name,
00041 BinaryBuffer & response
00042 );
00043
00044 virtual bool
00045 has_fault();
00046
00047 virtual const QName &
00048 get_message_name();
00049
00050 virtual void
00051 read_fault(
00052 UserFaultException& fault
00053 ) throw((DeserializationException));
00054
00055 virtual void
00056 set_wrapper_element_qname(
00057 const QName& name
00058 );
00059
00060 virtual const QName &
00061 get_wrapper_element_qname();
00062
00063 virtual MessageReader *
00064 get_reader();
00065
00066 virtual const BinaryBuffer&
00067 get_data() throw((NoDataException));
00068
00069 virtual void
00070 set_reader(
00071 MessageReader* message_reader
00072 );
00073
00074 private:
00075 const IT_WSDL::WSDLDefinitions& m_wsdl_definition;
00076 MessageReader * m_message_reader;
00077 MessageType m_message_type;
00078 bool m_is_message_empty;
00079
00080
00081
00082 TransportReadableMessage(const TransportReadableMessage& rhs);
00083 void operator=(const TransportReadableMessage& rhs);
00084 };
00085 }
00086
00087 #endif
00088