00001
00032 #ifndef LL_LLSDMESSAGEREADER_H
00033 #define LL_LLSDMESSAGEREADER_H
00034
00035 #include "llmessagereader.h"
00036 #include "llsd.h"
00037
00038 #include <map>
00039
00040 class LLMessageTemplate;
00041 class LLMsgData;
00042
00043 class LLSDMessageReader : public LLMessageReader
00044 {
00045 public:
00046
00047 LLSDMessageReader();
00048 virtual ~LLSDMessageReader();
00049
00051 virtual void getBinaryData(const char *block, const char *var,
00052 void *datap, S32 size, S32 blocknum = 0,
00053 S32 max_size = S32_MAX);
00054 virtual void getBOOL(const char *block, const char *var, BOOL &data,
00055 S32 blocknum = 0);
00056 virtual void getS8(const char *block, const char *var, S8 &data,
00057 S32 blocknum = 0);
00058 virtual void getU8(const char *block, const char *var, U8 &data,
00059 S32 blocknum = 0);
00060 virtual void getS16(const char *block, const char *var, S16 &data,
00061 S32 blocknum = 0);
00062 virtual void getU16(const char *block, const char *var, U16 &data,
00063 S32 blocknum = 0);
00064 virtual void getS32(const char *block, const char *var, S32 &data,
00065 S32 blocknum = 0);
00066 virtual void getF32(const char *block, const char *var, F32 &data,
00067 S32 blocknum = 0);
00068 virtual void getU32(const char *block, const char *var, U32 &data,
00069 S32 blocknum = 0);
00070 virtual void getU64(const char *block, const char *var, U64 &data,
00071 S32 blocknum = 0);
00072 virtual void getF64(const char *block, const char *var, F64 &data,
00073 S32 blocknum = 0);
00074 virtual void getVector3(const char *block, const char *var,
00075 LLVector3 &vec, S32 blocknum = 0);
00076 virtual void getVector4(const char *block, const char *var,
00077 LLVector4 &vec, S32 blocknum = 0);
00078 virtual void getVector3d(const char *block, const char *var,
00079 LLVector3d &vec, S32 blocknum = 0);
00080 virtual void getQuat(const char *block, const char *var, LLQuaternion &q,
00081 S32 blocknum = 0);
00082 virtual void getUUID(const char *block, const char *var, LLUUID &uuid,
00083 S32 blocknum = 0);
00084 virtual void getIPAddr(const char *block, const char *var, U32 &ip,
00085 S32 blocknum = 0);
00086 virtual void getIPPort(const char *block, const char *var, U16 &port,
00087 S32 blocknum = 0);
00088 virtual void getString(const char *block, const char *var,
00089 S32 buffer_size, char *buffer, S32 blocknum = 0);
00090
00091 virtual S32 getNumberOfBlocks(const char *blockname);
00092 virtual S32 getSize(const char *blockname, const char *varname);
00093 virtual S32 getSize(const char *blockname, S32 blocknum,
00094 const char *varname);
00095
00096 virtual void clearMessage();
00097
00098 virtual const char* getMessageName() const;
00099 virtual S32 getMessageSize() const;
00100
00101 virtual void copyToBuilder(LLMessageBuilder&) const;
00102
00104 void setMessage(const char* name, const LLSD& msg);
00105
00106 private:
00107 const char* mMessageName;
00108 LLSD mMessage;
00109 };
00110
00111 #endif // LL_LLSDMESSAGEREADER_H