summaryrefslogtreecommitdiff
path: root/indra/llmessage/llsdmessagereader.cpp
diff options
context:
space:
mode:
authorTess Chu <tess@lindenlab.com>2007-07-11 21:29:02 +0000
committerTess Chu <tess@lindenlab.com>2007-07-11 21:29:02 +0000
commit57b8fef824b6d7f37c5be5812ebffa39ab2e8093 (patch)
treef89014544fc276b283a36eb2e0cb52e93806a44a /indra/llmessage/llsdmessagereader.cpp
parenta6769f262ff910949a7e1c81cf98e52ddfc2d44a (diff)
svn merge --ignore-ancestry svn+ssh://svn/svn/linden/release@65088 svn+ssh://svn/svn/linden/branches/release-candidate@65078 -> release Paired by Tess and rdw.
Diffstat (limited to 'indra/llmessage/llsdmessagereader.cpp')
-rwxr-xr-xindra/llmessage/llsdmessagereader.cpp48
1 files changed, 41 insertions, 7 deletions
diff --git a/indra/llmessage/llsdmessagereader.cpp b/indra/llmessage/llsdmessagereader.cpp
index 6312bee0ab..889cb305c2 100755
--- a/indra/llmessage/llsdmessagereader.cpp
+++ b/indra/llmessage/llsdmessagereader.cpp
@@ -1,7 +1,18 @@
+/**
+ * @file llsdmessagereader.cpp
+ * @brief LLSDMessageReader class implementation.
+ *
+ * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc.
+ * $License$
+ */
+
+#include "linden_common.h"
+
#include "llsdmessagereader.h"
-#include "llsdutil.h"
+
#include "llmessagebuilder.h"
#include "llsdmessagebuilder.h"
+#include "llsdutil.h"
LLSDMessageReader::LLSDMessageReader()
{
@@ -15,11 +26,30 @@ LLSDMessageReader::~LLSDMessageReader()
LLSD getLLSD(const LLSD& input, const char* block, const char* var, S32 blocknum)
{
- if(input[block].isArray())
+ // babbage: log error to llerrs if variable not found to mimic
+ // LLTemplateMessageReader::getData behaviour
+ if(NULL == block)
+ {
+ llerrs << "NULL block name" << llendl;
+ return LLSD();
+ }
+ if(NULL == var)
+ {
+ llerrs << "NULL var name" << llendl;
+ return LLSD();
+ }
+ if(! input[block].isArray())
+ {
+ llerrs << "block " << block << " not found" << llendl;
+ return LLSD();
+ }
+
+ LLSD result = input[block][blocknum][var];
+ if(result.isUndefined())
{
- return input[block][blocknum][var];
+ llerrs << "var " << var << " not found" << llendl;
}
- return LLSD();
+ return result;
}
//virtual
@@ -167,8 +197,12 @@ void LLSDMessageReader::getIPPort(const char *block, const char *var,
void LLSDMessageReader::getString(const char *block, const char *var,
S32 buffer_size, char *buffer, S32 blocknum)
{
+ if(buffer_size <= 0)
+ {
+ llwarns << "buffer_size <= 0" << llendl;
+ return;
+ }
std::string data = getLLSD(mMessage, block, var, blocknum);
-
S32 data_size = data.size();
if (data_size >= buffer_size)
{
@@ -241,7 +275,7 @@ void LLSDMessageReader::clearMessage()
//virtual
const char* LLSDMessageReader::getMessageName() const
{
- return mMessageName.c_str();
+ return mMessageName;
}
// virtual
@@ -256,7 +290,7 @@ void LLSDMessageReader::copyToBuilder(LLMessageBuilder& builder) const
builder.copyFromLLSD(mMessage);
}
-void LLSDMessageReader::setMessage(const std::string& name, const LLSD& message)
+void LLSDMessageReader::setMessage(const char* name, const LLSD& message)
{
mMessageName = name;
// TODO: Validate