00001
00018 #ifndef _ACTIVEMQ_WIREFORMAT_OPENWIRE_MARSHAL_DATASTREAMMARSHALLER_H_
00019 #define _ACTIVEMQ_WIREFORMAT_OPENWIRE_MARSHAL_DATASTREAMMARSHALLER_H_
00020
00021 #include <decaf/io/DataInputStream.h>
00022 #include <decaf/io/DataOutputStream.h>
00023 #include <decaf/io/IOException.h>
00024 #include <activemq/commands/DataStructure.h>
00025 #include <activemq/wireformat/openwire/utils/BooleanStream.h>
00026 #include <activemq/wireformat/openwire/OpenWireFormat.h>
00027 #include <activemq/util/Config.h>
00028
00029 namespace activemq {
00030 namespace wireformat {
00031 namespace openwire {
00032 namespace marshal {
00033
00037 class AMQCPP_API DataStreamMarshaller {
00038 public:
00039
00040 virtual ~DataStreamMarshaller();
00041
00046 virtual unsigned char getDataStructureType() const = 0;
00047
00053 virtual commands::DataStructure* createObject() const = 0;
00054
00067 virtual int tightMarshal1(OpenWireFormat* format,
00068 commands::DataStructure* command,
00069 utils::BooleanStream* bs) = 0;
00070
00079 virtual void tightMarshal2(OpenWireFormat* format,
00080 commands::DataStructure* command,
00081 decaf::io::DataOutputStream* ds,
00082 utils::BooleanStream* bs) = 0;
00083
00092 virtual void tightUnmarshal(OpenWireFormat* format,
00093 commands::DataStructure* command,
00094 decaf::io::DataInputStream* dis,
00095 utils::BooleanStream* bs) = 0;
00096
00104 virtual void looseMarshal(OpenWireFormat* format,
00105 commands::DataStructure* command,
00106 decaf::io::DataOutputStream* ds) = 0;
00107
00115 virtual void looseUnmarshal(OpenWireFormat* format,
00116 commands::DataStructure* command,
00117 decaf::io::DataInputStream* dis) = 0;
00118
00119 };
00120
00121 }}}}
00122
00123 #endif