00001 #ifndef _IT_BUS_READABLE_MESSAGE_H_
00002 #define _IT_BUS_READABLE_MESSAGE_H_
00003
00004
00005
00006
00007 #include <it_bus/types.h>
00008 #include <it_bus/no_data_exception.h>
00009 #include <it_bus/deserialization_exception.h>
00010 #include <it_bus/part_list.h>
00011
00012 namespace IT_Bus
00013 {
00014 class AnyType;
00015 class DateTime;
00016 class BinaryOutParam;
00017 class BinaryBuffer;
00018 class MessageReader;
00019 class UserFaultException;
00020 class QName;
00021 class PartList;
00022
00034 class IT_BUS_API ReadableMessage
00035 {
00036 public:
00037 ReadableMessage(
00038 size_t part_count = 0
00039 );
00040
00041 virtual ~ReadableMessage();
00042
00048 virtual PartList&
00049 get_parts();
00050
00056 virtual const PartList&
00057 get_parts() const;
00058
00059 virtual void
00060 add_part(
00061 const QName& name,
00062 AnyType& part
00063 );
00064
00065 virtual void
00066 add_part(
00067 const QName& name,
00068 Boolean & part
00069 );
00070
00071 virtual void
00072 add_part(
00073 const QName& name,
00074 Float & part
00075 );
00076
00077 virtual void
00078 add_part(
00079 const QName& name,
00080 Double & part
00081 );
00082
00083 virtual void
00084 add_part(
00085 const QName& name,
00086 Int & part
00087 );
00088
00089 virtual void
00090 add_part(
00091 const QName& name,
00092 Long & part
00093 );
00094
00095 virtual void
00096 add_part(
00097 const QName& name,
00098 Short & part
00099 );
00100
00101 virtual void
00102 add_part(
00103 const QName& name,
00104 UInt & part
00105 );
00106
00107 virtual void
00108 add_part(
00109 const QName& name,
00110 ULong & part
00111 );
00112
00113 virtual void
00114 add_part(
00115 const QName& name,
00116 UShort & part
00117 );
00118
00119 virtual void
00120 add_part(
00121 const QName& name,
00122 Byte & part
00123 );
00124
00125 virtual void
00126 add_part(
00127 const QName& name,
00128 UByte & part
00129 );
00130
00131 virtual void
00132 add_part(
00133 const QName& name,
00134 DateTime & part
00135 );
00136
00137 virtual void
00138 add_part(
00139 const QName& name,
00140 String & part
00141 );
00142
00143 virtual void
00144 add_part(
00145 const QName& name,
00146 Decimal & part
00147 );
00148
00149 virtual void
00150 add_part(
00151 const QName& name,
00152 BinaryOutParam & part
00153 );
00154
00155 virtual void
00156 add_part(
00157 const QName& name,
00158 QName & part
00159 );
00160
00161 virtual bool
00162 has_fault() = 0;
00163
00164 virtual const QName &
00165 get_message_name() = 0;
00166
00167 virtual void
00168 set_wrapper_element_qname(
00169 const QName& name
00170 ) = 0;
00171
00172 virtual const QName &
00173 get_wrapper_element_qname() = 0;
00174
00175 virtual void
00176 read_fault(
00177 UserFaultException& fault
00178 ) throw((DeserializationException)) = 0;
00179
00180 virtual const BinaryBuffer&
00181 get_data() throw((NoDataException)) = 0;
00182
00183 virtual MessageReader*
00184 get_reader() = 0;
00185
00186 protected:
00187 PartList m_parts;
00188
00189 private:
00190
00191 ReadableMessage(const ReadableMessage&);
00192 void operator=(const ReadableMessage&);
00193 };
00194 }
00195
00196 #endif