00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _ACTIVEMQ_COMMANDS_ACTIVEMQMAPMESSAGE_H_
00019 #define _ACTIVEMQ_COMMANDS_ACTIVEMQMAPMESSAGE_H_
00020
00021 #include <activemq/util/Config.h>
00022 #include <activemq/commands/ActiveMQMessageTemplate.h>
00023 #include <activemq/util/PrimitiveMap.h>
00024 #include <decaf/lang/exceptions/NullPointerException.h>
00025 #include <cms/MapMessage.h>
00026 #include <vector>
00027 #include <string>
00028 #include <memory>
00029
00030 namespace activemq{
00031 namespace commands{
00032
00033 class AMQCPP_API ActiveMQMapMessage :
00034 public ActiveMQMessageTemplate<cms::MapMessage> {
00035
00036 private:
00037
00038
00039 mutable std::auto_ptr<util::PrimitiveMap> map;
00040
00041 public:
00042
00043 const static unsigned char ID_ACTIVEMQMAPMESSAGE = 25;
00044
00045 private:
00046
00047 ActiveMQMapMessage( const ActiveMQMapMessage& );
00048 ActiveMQMapMessage& operator= ( const ActiveMQMapMessage& );
00049
00050 public:
00051
00052 ActiveMQMapMessage();
00053
00054 virtual ~ActiveMQMapMessage() throw();
00055
00056 virtual unsigned char getDataStructureType() const;
00057
00058 virtual bool isMarshalAware() const {
00059 return true;
00060 }
00061
00062 virtual ActiveMQMapMessage* cloneDataStructure() const;
00063
00064 virtual void copyDataStructure( const DataStructure* src );
00065
00066 virtual void beforeMarshal( wireformat::WireFormat* wireFormat );
00067
00068 virtual std::string toString() const;
00069
00070 virtual bool equals( const DataStructure* value ) const;
00071
00072 virtual void clearBody() throw( cms::CMSException );
00073
00074 public:
00075
00076 virtual cms::MapMessage* clone() const {
00077 ActiveMQMapMessage* clone = this->cloneDataStructure();
00078 clone->setReadOnlyBody(false);
00079 clone->setReadOnlyProperties(false);
00080 return dynamic_cast<cms::MapMessage*>(clone);
00081 }
00082
00083 public:
00084
00088 virtual bool isEmpty() const;
00089
00093 virtual std::vector< std::string > getMapNames() const;
00094
00098 virtual bool itemExists( const std::string& name ) const;
00099
00103 virtual cms::Message::ValueType getValueType(const std::string& key) const;
00104
00108 virtual bool getBoolean( const std::string& name ) const;
00109
00113 virtual void setBoolean( const std::string& name, bool value );
00114
00118 virtual unsigned char getByte( const std::string& name ) const;
00119
00123 virtual void setByte( const std::string& name, unsigned char value );
00124
00128 virtual std::vector<unsigned char> getBytes( const std::string& name ) const;
00129
00133 virtual void setBytes( const std::string& name, const std::vector<unsigned char>& value );
00134
00138 virtual char getChar( const std::string& name ) const;
00139
00143 virtual void setChar( const std::string& name, char value );
00144
00148 virtual double getDouble( const std::string& name ) const;
00149
00153 virtual void setDouble( const std::string& name, double value );
00154
00158 virtual float getFloat( const std::string& name ) const;
00159
00163 virtual void setFloat( const std::string& name, float value );
00164
00168 virtual int getInt( const std::string& name ) const;
00169
00173 virtual void setInt( const std::string& name, int value );
00174
00178 virtual long long getLong( const std::string& name ) const;
00179
00183 virtual void setLong( const std::string& name, long long value );
00184
00188 virtual short getShort( const std::string& name ) const;
00189
00193 virtual void setShort( const std::string& name, short value );
00194
00198 virtual std::string getString( const std::string& name ) const;
00199
00203 virtual void setString( const std::string& name, const std::string& value );
00204
00205 protected:
00206
00215 util::PrimitiveMap& getMap();
00216 const util::PrimitiveMap& getMap() const;
00217
00223 virtual void checkMapIsUnmarshalled() const;
00224
00225 };
00226
00227 }}
00228
00229 #endif