diff options
Diffstat (limited to 'indra/llmessage/llsdmessagereader.cpp')
-rw-r--r-- | indra/llmessage/llsdmessagereader.cpp | 388 |
1 files changed, 194 insertions, 194 deletions
diff --git a/indra/llmessage/llsdmessagereader.cpp b/indra/llmessage/llsdmessagereader.cpp index b729ebafa9..00d962357b 100644 --- a/indra/llmessage/llsdmessagereader.cpp +++ b/indra/llmessage/llsdmessagereader.cpp @@ -1,25 +1,25 @@ -/** +/** * @file llsdmessagereader.cpp * @brief LLSDMessageReader class implementation. * * $LicenseInfo:firstyear=2007&license=viewerlgpl$ * Second Life Viewer Source Code * Copyright (C) 2010, Linden Research, Inc. - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License only. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * + * * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ */ @@ -41,11 +41,11 @@ #include "v4color.h" LLSDMessageReader::LLSDMessageReader() : - mMessageName(NULL) + mMessageName(NULL) { } -//virtual +//virtual LLSDMessageReader::~LLSDMessageReader() { } @@ -53,292 +53,292 @@ LLSDMessageReader::~LLSDMessageReader() LLSD getLLSD(const LLSD& input, const char* block, const char* var, S32 blocknum) { - // babbage: log error to LL_ERRS() if variable not found to mimic - // LLTemplateMessageReader::getData behaviour - if(NULL == block) - { - LL_ERRS() << "NULL block name" << LL_ENDL; - return LLSD(); - } - if(NULL == var) - { - LL_ERRS() << "NULL var name" << LL_ENDL; - return LLSD(); - } - if(! input[block].isArray()) - { - // NOTE: babbage: need to return default for missing blocks to allow - // backwards/forwards compatibility - handlers must cope with default - // values. - LL_WARNS() << "block " << block << " not found" << LL_ENDL; - return LLSD(); - } + // babbage: log error to LL_ERRS() if variable not found to mimic + // LLTemplateMessageReader::getData behaviour + if(NULL == block) + { + LL_ERRS() << "NULL block name" << LL_ENDL; + return LLSD(); + } + if(NULL == var) + { + LL_ERRS() << "NULL var name" << LL_ENDL; + return LLSD(); + } + if(! input[block].isArray()) + { + // NOTE: babbage: need to return default for missing blocks to allow + // backwards/forwards compatibility - handlers must cope with default + // values. + LL_WARNS() << "block " << block << " not found" << LL_ENDL; + return LLSD(); + } - LLSD result = input[block][blocknum][var]; - if(result.isUndefined()) - { - // NOTE: babbage: need to return default for missing vars to allow - // backwards/forwards compatibility - handlers must cope with default - // values. - LL_WARNS() << "var " << var << " not found" << LL_ENDL; - } - return result; + LLSD result = input[block][blocknum][var]; + if(result.isUndefined()) + { + // NOTE: babbage: need to return default for missing vars to allow + // backwards/forwards compatibility - handlers must cope with default + // values. + LL_WARNS() << "var " << var << " not found" << LL_ENDL; + } + return result; } -//virtual -void LLSDMessageReader::getBinaryData(const char *block, const char *var, - void *datap, S32 size, S32 blocknum, - S32 max_size) +//virtual +void LLSDMessageReader::getBinaryData(const char *block, const char *var, + void *datap, S32 size, S32 blocknum, + S32 max_size) { - std::vector<U8> data = getLLSD(mMessage, block, var, blocknum); - S32 data_size = (S32)data.size(); + std::vector<U8> data = getLLSD(mMessage, block, var, blocknum); + S32 data_size = (S32)data.size(); + + if (size && data_size != size) + { + return; + } + + if (max_size < data_size) + { + data_size = max_size; + } - if (size && data_size != size) - { - return; - } - - if (max_size < data_size) - { - data_size = max_size; - } - - // Calls to memcpy will fail if data_size is not positive. - // Phoenix 2009-02-27 - if(data_size <= 0) - { - return; - } - memcpy(datap, &(data[0]), data_size); + // Calls to memcpy will fail if data_size is not positive. + // Phoenix 2009-02-27 + if(data_size <= 0) + { + return; + } + memcpy(datap, &(data[0]), data_size); } -//virtual -void LLSDMessageReader::getBOOL(const char *block, const char *var, - BOOL &data, - S32 blocknum) +//virtual +void LLSDMessageReader::getBOOL(const char *block, const char *var, + BOOL &data, + S32 blocknum) { - data = getLLSD(mMessage, block, var, blocknum); + data = getLLSD(mMessage, block, var, blocknum); } -//virtual -void LLSDMessageReader::getS8(const char *block, const char *var, S8 &data, - S32 blocknum) +//virtual +void LLSDMessageReader::getS8(const char *block, const char *var, S8 &data, + S32 blocknum) { - data = getLLSD(mMessage, block, var, blocknum).asInteger(); + data = getLLSD(mMessage, block, var, blocknum).asInteger(); } -//virtual -void LLSDMessageReader::getU8(const char *block, const char *var, U8 &data, - S32 blocknum) +//virtual +void LLSDMessageReader::getU8(const char *block, const char *var, U8 &data, + S32 blocknum) { - data = getLLSD(mMessage, block, var, blocknum).asInteger(); + data = getLLSD(mMessage, block, var, blocknum).asInteger(); } -//virtual -void LLSDMessageReader::getS16(const char *block, const char *var, S16 &data, - S32 blocknum) +//virtual +void LLSDMessageReader::getS16(const char *block, const char *var, S16 &data, + S32 blocknum) { - data = getLLSD(mMessage, block, var, blocknum).asInteger(); + data = getLLSD(mMessage, block, var, blocknum).asInteger(); } -//virtual -void LLSDMessageReader::getU16(const char *block, const char *var, U16 &data, - S32 blocknum) +//virtual +void LLSDMessageReader::getU16(const char *block, const char *var, U16 &data, + S32 blocknum) { - data = getLLSD(mMessage, block, var, blocknum).asInteger(); + data = getLLSD(mMessage, block, var, blocknum).asInteger(); } -//virtual -void LLSDMessageReader::getS32(const char *block, const char *var, S32 &data, - S32 blocknum) +//virtual +void LLSDMessageReader::getS32(const char *block, const char *var, S32 &data, + S32 blocknum) { - data = getLLSD(mMessage, block, var, blocknum); + data = getLLSD(mMessage, block, var, blocknum); } -//virtual -void LLSDMessageReader::getF32(const char *block, const char *var, F32 &data, - S32 blocknum) +//virtual +void LLSDMessageReader::getF32(const char *block, const char *var, F32 &data, + S32 blocknum) { - data = (F32)getLLSD(mMessage, block, var, blocknum).asReal(); + data = (F32)getLLSD(mMessage, block, var, blocknum).asReal(); } -//virtual -void LLSDMessageReader::getU32(const char *block, const char *var, U32 &data, - S32 blocknum) +//virtual +void LLSDMessageReader::getU32(const char *block, const char *var, U32 &data, + S32 blocknum) { - data = ll_U32_from_sd(getLLSD(mMessage, block, var, blocknum)); + data = ll_U32_from_sd(getLLSD(mMessage, block, var, blocknum)); } -//virtual +//virtual void LLSDMessageReader::getU64(const char *block, const char *var, - U64 &data, S32 blocknum) + U64 &data, S32 blocknum) { - data = ll_U64_from_sd(getLLSD(mMessage, block, var, blocknum)); + data = ll_U64_from_sd(getLLSD(mMessage, block, var, blocknum)); } -//virtual +//virtual void LLSDMessageReader::getF64(const char *block, const char *var, - F64 &data, S32 blocknum) + F64 &data, S32 blocknum) { - data = getLLSD(mMessage, block, var, blocknum); + data = getLLSD(mMessage, block, var, blocknum); } -//virtual -void LLSDMessageReader::getVector3(const char *block, const char *var, - LLVector3 &vec, S32 blocknum) +//virtual +void LLSDMessageReader::getVector3(const char *block, const char *var, + LLVector3 &vec, S32 blocknum) { - vec = ll_vector3_from_sd(getLLSD(mMessage, block, var, blocknum)); + vec = ll_vector3_from_sd(getLLSD(mMessage, block, var, blocknum)); } -//virtual -void LLSDMessageReader::getVector4(const char *block, const char *var, - LLVector4 &vec, S32 blocknum) +//virtual +void LLSDMessageReader::getVector4(const char *block, const char *var, + LLVector4 &vec, S32 blocknum) { - vec = ll_vector4_from_sd(getLLSD(mMessage, block, var, blocknum)); + vec = ll_vector4_from_sd(getLLSD(mMessage, block, var, blocknum)); } -//virtual -void LLSDMessageReader::getVector3d(const char *block, const char *var, - LLVector3d &vec, S32 blocknum) +//virtual +void LLSDMessageReader::getVector3d(const char *block, const char *var, + LLVector3d &vec, S32 blocknum) { - vec = ll_vector3d_from_sd(getLLSD(mMessage, block, var, blocknum)); + vec = ll_vector3d_from_sd(getLLSD(mMessage, block, var, blocknum)); } -//virtual +//virtual void LLSDMessageReader::getQuat(const char *block, const char *var, - LLQuaternion &q, S32 blocknum) + LLQuaternion &q, S32 blocknum) { - q = ll_quaternion_from_sd(getLLSD(mMessage, block, var, blocknum)); + q = ll_quaternion_from_sd(getLLSD(mMessage, block, var, blocknum)); } -//virtual +//virtual void LLSDMessageReader::getUUID(const char *block, const char *var, - LLUUID &uuid, S32 blocknum) + LLUUID &uuid, S32 blocknum) { - uuid = getLLSD(mMessage, block, var, blocknum); + uuid = getLLSD(mMessage, block, var, blocknum); } -//virtual +//virtual void LLSDMessageReader::getIPAddr(const char *block, const char *var, - U32 &ip, S32 blocknum) + U32 &ip, S32 blocknum) { - ip = ll_ipaddr_from_sd(getLLSD(mMessage, block, var, blocknum)); + ip = ll_ipaddr_from_sd(getLLSD(mMessage, block, var, blocknum)); } -//virtual +//virtual void LLSDMessageReader::getIPPort(const char *block, const char *var, - U16 &port, S32 blocknum) + U16 &port, S32 blocknum) { - port = getLLSD(mMessage, block, var, blocknum).asInteger(); + port = getLLSD(mMessage, block, var, blocknum).asInteger(); } -//virtual -void LLSDMessageReader::getString(const char *block, const char *var, - S32 buffer_size, char *buffer, S32 blocknum) +//virtual +void LLSDMessageReader::getString(const char *block, const char *var, + S32 buffer_size, char *buffer, S32 blocknum) { - if(buffer_size <= 0) - { - LL_WARNS() << "buffer_size <= 0" << LL_ENDL; - return; - } - std::string data = getLLSD(mMessage, block, var, blocknum); - S32 data_size = data.size(); - if (data_size >= buffer_size) - { - data_size = buffer_size - 1; - } - memcpy(buffer, data.data(), data_size); - buffer[data_size] = '\0'; + if(buffer_size <= 0) + { + LL_WARNS() << "buffer_size <= 0" << LL_ENDL; + return; + } + std::string data = getLLSD(mMessage, block, var, blocknum); + S32 data_size = data.size(); + if (data_size >= buffer_size) + { + data_size = buffer_size - 1; + } + memcpy(buffer, data.data(), data_size); + buffer[data_size] = '\0'; } -//virtual -void LLSDMessageReader::getString(const char *block, const char *var, - std::string& outstr, S32 blocknum) +//virtual +void LLSDMessageReader::getString(const char *block, const char *var, + std::string& outstr, S32 blocknum) { - outstr = getLLSD(mMessage, block, var, blocknum).asString(); + outstr = getLLSD(mMessage, block, var, blocknum).asString(); } -//virtual -S32 LLSDMessageReader::getNumberOfBlocks(const char *blockname) +//virtual +S32 LLSDMessageReader::getNumberOfBlocks(const char *blockname) { - return mMessage[blockname].size(); + return mMessage[blockname].size(); } S32 getElementSize(const LLSD& llsd) { - LLSD::Type type = llsd.type(); - switch(type) - { - case LLSD::TypeBoolean: - return sizeof(bool); - case LLSD::TypeInteger: - return sizeof(S32); - case LLSD::TypeReal: - return sizeof(F64); - case LLSD::TypeString: - return llsd.size(); - case LLSD::TypeUUID: - return sizeof(LLUUID); - case LLSD::TypeDate: - return sizeof(LLDate); - case LLSD::TypeURI: - return sizeof(LLURI); - case LLSD::TypeBinary: - { - std::vector<U8> data = llsd; - return data.size() * sizeof(U8); - } - case LLSD::TypeMap: - case LLSD::TypeArray: - case LLSD::TypeUndefined: - default: // TypeLLSDTypeEnd, TypeLLSDNumTypes, etc. - return 0; - } - //return 0; -} - -//virtual + LLSD::Type type = llsd.type(); + switch(type) + { + case LLSD::TypeBoolean: + return sizeof(bool); + case LLSD::TypeInteger: + return sizeof(S32); + case LLSD::TypeReal: + return sizeof(F64); + case LLSD::TypeString: + return llsd.size(); + case LLSD::TypeUUID: + return sizeof(LLUUID); + case LLSD::TypeDate: + return sizeof(LLDate); + case LLSD::TypeURI: + return sizeof(LLURI); + case LLSD::TypeBinary: + { + std::vector<U8> data = llsd; + return data.size() * sizeof(U8); + } + case LLSD::TypeMap: + case LLSD::TypeArray: + case LLSD::TypeUndefined: + default: // TypeLLSDTypeEnd, TypeLLSDNumTypes, etc. + return 0; + } + //return 0; +} + +//virtual //Mainly used to find size of binary block of data -S32 LLSDMessageReader::getSize(const char *blockname, const char *varname) +S32 LLSDMessageReader::getSize(const char *blockname, const char *varname) { - return getElementSize(mMessage[blockname][0][varname]); + return getElementSize(mMessage[blockname][0][varname]); } -//virtual -S32 LLSDMessageReader::getSize(const char *blockname, S32 blocknum, - const char *varname) +//virtual +S32 LLSDMessageReader::getSize(const char *blockname, S32 blocknum, + const char *varname) { - return getElementSize(mMessage[blockname][blocknum][varname]); + return getElementSize(mMessage[blockname][blocknum][varname]); } -//virtual +//virtual void LLSDMessageReader::clearMessage() { - mMessage = LLSD(); + mMessage = LLSD(); } -//virtual +//virtual const char* LLSDMessageReader::getMessageName() const { - return mMessageName; + return mMessageName; } -// virtual +// virtual S32 LLSDMessageReader::getMessageSize() const { - return 0; + return 0; } -//virtual +//virtual void LLSDMessageReader::copyToBuilder(LLMessageBuilder& builder) const { - builder.copyFromLLSD(mMessage); + builder.copyFromLLSD(mMessage); } void LLSDMessageReader::setMessage(const char* name, const LLSD& message) { - mMessageName = name; - // TODO: Validate - mMessage = message; + mMessageName = name; + // TODO: Validate + mMessage = message; } |