00001
00018 #ifndef _ACTIVEMQ_WIREFORMAT_OPENWIRE_MARSHAL_PRIMITIVETYPESMARSHALLER_H_
00019 #define _ACTIVEMQ_WIREFORMAT_OPENWIRE_MARSHAL_PRIMITIVETYPESMARSHALLER_H_
00020
00021 #include <cms/CMSException.h>
00022 #include <activemq/util/Config.h>
00023 #include <activemq/util/PrimitiveValueNode.h>
00024 #include <activemq/util/PrimitiveMap.h>
00025 #include <activemq/util/PrimitiveList.h>
00026 #include <decaf/io/DataOutputStream.h>
00027 #include <decaf/io/DataInputStream.h>
00028 #include <decaf/io/IOException.h>
00029 #include <string>
00030
00031 namespace activemq{
00032 namespace wireformat{
00033 namespace openwire{
00034 namespace marshal{
00035
00041 class AMQCPP_API PrimitiveTypesMarshaller {
00042 public:
00043
00044 PrimitiveTypesMarshaller() {}
00045 virtual ~PrimitiveTypesMarshaller() {}
00046
00057 static void marshal( const util::PrimitiveMap* map, std::vector<unsigned char>& buffer );
00058
00069 static void unmarshal( util::PrimitiveMap* map, const std::vector<unsigned char>& buffer );
00070
00081 static void marshal( const util::PrimitiveList* list, std::vector<unsigned char>& buffer );
00082
00093 static void unmarshal( util::PrimitiveList* list, const std::vector<unsigned char>& buffer );
00094
00095 public:
00096
00107 static void marshalMap( const util::PrimitiveMap* map, decaf::io::DataOutputStream& dataOut );
00108
00119 static util::PrimitiveMap* unmarshalMap( decaf::io::DataInputStream& dataIn );
00120
00131 static void marshalList( const util::PrimitiveList* list, decaf::io::DataOutputStream& dataOut );
00132
00143 static util::PrimitiveList* unmarshalList( decaf::io::DataInputStream& dataIn );
00144
00145 protected:
00146
00156 static void marshalPrimitiveMap(
00157 decaf::io::DataOutputStream& dataOut,
00158 const decaf::util::Map<std::string, util::PrimitiveValueNode>& map );
00159
00168 static void marshalPrimitiveList(
00169 decaf::io::DataOutputStream& dataOut,
00170 const decaf::util::List<util::PrimitiveValueNode>& list );
00171
00179 static void marshalPrimitive( decaf::io::DataOutputStream& dataOut,
00180 const util::PrimitiveValueNode& value );
00181
00190 static void unmarshalPrimitiveMap(
00191 decaf::io::DataInputStream& dataIn, util::PrimitiveMap& map );
00192
00201 static void unmarshalPrimitiveList(
00202 decaf::io::DataInputStream& dataIn,
00203 decaf::util::LinkedList<util::PrimitiveValueNode>& list );
00204
00213 static util::PrimitiveValueNode unmarshalPrimitive( decaf::io::DataInputStream& dataIn );
00214
00215 };
00216
00217 }}}}
00218
00219 #endif