00001
00032 #ifndef LL_LLSDMESSAGEBUILDER_H
00033 #define LL_LLSDMESSAGEBUILDER_H
00034
00035 #include <map>
00036
00037 #include "llmessagebuilder.h"
00038 #include "llmsgvariabletype.h"
00039 #include "llsd.h"
00040
00041 class LLMessageTemplate;
00042 class LLMsgData;
00043
00044 class LLSDMessageBuilder : public LLMessageBuilder
00045 {
00046 public:
00047
00048
00049
00050 LLSDMessageBuilder();
00051 virtual ~LLSDMessageBuilder();
00052
00053 virtual void newMessage(const char* name);
00054
00055 virtual void nextBlock(const char* blockname);
00056 virtual BOOL removeLastBlock();
00057
00059 virtual void addBinaryData(
00060 const char* varname,
00061 const void* data,
00062 S32 size);
00063 virtual void addBOOL(const char* varname, BOOL b);
00064 virtual void addS8(const char* varname, S8 s);
00065 virtual void addU8(const char* varname, U8 u);
00066 virtual void addS16(const char* varname, S16 i);
00067 virtual void addU16(const char* varname, U16 i);
00068 virtual void addF32(const char* varname, F32 f);
00069 virtual void addS32(const char* varname, S32 s);
00070 virtual void addU32(const char* varname, U32 u);
00071 virtual void addU64(const char* varname, U64 lu);
00072 virtual void addF64(const char* varname, F64 d);
00073 virtual void addVector3(const char* varname, const LLVector3& vec);
00074 virtual void addVector4(const char* varname, const LLVector4& vec);
00075 virtual void addVector3d(const char* varname, const LLVector3d& vec);
00076 virtual void addQuat(const char* varname, const LLQuaternion& quat);
00077 virtual void addUUID(const char* varname, const LLUUID& uuid);
00078 virtual void addIPAddr(const char* varname, const U32 ip);
00079 virtual void addIPPort(const char* varname, const U16 port);
00080 virtual void addString(const char* varname, const char* s);
00081 virtual void addString(const char* varname, const std::string& s);
00082
00083 virtual BOOL isMessageFull(const char* blockname) const;
00084 virtual void compressMessage(U8*& buf_ptr, U32& buffer_length);
00085
00086 virtual BOOL isBuilt() const;
00087 virtual BOOL isClear() const;
00088 virtual U32 buildMessage(U8* buffer, U32 buffer_size, U8 offset_to_data);
00091 virtual void clearMessage();
00092
00093
00094 virtual void setBuilt(BOOL b);
00095
00096 virtual S32 getMessageSize();
00097 virtual const char* getMessageName() const;
00098
00099 virtual void copyFromMessageData(const LLMsgData& data);
00100
00101 virtual void copyFromLLSD(const LLSD& msg);
00102
00103 const LLSD& getMessage() const;
00104 private:
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123 LLSD mCurrentMessage;
00124 LLSD* mCurrentBlock;
00125 std::string mCurrentMessageName;
00126 std::string mCurrentBlockName;
00127 BOOL mbSBuilt;
00128 BOOL mbSClear;
00129 };
00130
00131 #endif // LL_LLSDMESSAGEBUILDER_H