diff options
author | Robert Knop <prospero@lindenlab.com> | 2009-02-25 21:02:17 +0000 |
---|---|---|
committer | Robert Knop <prospero@lindenlab.com> | 2009-02-25 21:02:17 +0000 |
commit | c88b470a8a2cdae8e69e5570b46d4b21c43368bc (patch) | |
tree | 551d764767aa1d9c095a99b586f5bb38ae3f1e57 /indra/llmessage/llsdmessagebuilder.cpp | |
parent | 997d24b83221aa63ef8141a9ab94434d2ba2ddc6 (diff) |
svn merge -r108815:112761 svn+ssh://svn.lindenlab.com/svn/linden/branches/server/server-1.26
The biggest things in this are Scalable Space Servers and Maint-Server-6
QAR-1209 : SSS
QAR-1295 : maint-server-6
Conflicts resolved by prospero:
C scripts/farm_distribute
C scripts/automated_build_scripts/build-linux.sh : resolved by
prospero, mostly kept the merge-right version in
the conflict, but there was one block of repeated
code from earlier that I removed.
C scripts/automated_build_scripts/build-mac.sh : kept merge-right
C indra/llcommon/llversionserver.h : svn revert
C indra/newsim/llsimparcel.h : kept *both*... working had "setArea",
merge-right had exportStream and importStream
C indra/newsim/llsimparcel.cpp : see llsimparcel.h
C indra/newsim/lltask.h : working had LLTask derived also from
LLScriptResourceConsumer, merge-right had LLTask
dervied also from LLAgentPosition. To resolve
conflict, derive from both.
C indra/newsim/lllslmanager.h : kept merge-right (had an added comment)
C indra/llmessage/llhttpnode.h : kept working (added the definition
of method LLHTTPNode::extendedResult)
C indra/lscript/lscript_execute_mono/llscriptexecutemono.cpp
C indra/lscript/lscript_execute_mono/llscriptexecutemono.h
: These two were resolved by si, in consultation with daveh
I also had to add the following stubs to
indra/newsim/tests/llgodkickutils_test.cpp in order to get it to
compile:
// LLScriptResourceConsumer interface methods in LLTask
LLScriptResource::LLScriptResource() { }
LLScriptResourcePool::LLScriptResourcePool() { }
LLScriptResourcePool LLScriptResourcePool::null;
LLScriptResourceConsumer::LLScriptResourceConsumer() { }
LLScriptResourcePool& LLScriptResourceConsumer::getScriptResourcePool() { return LLScriptResourcePool::null; }
const LLScriptResourcePool& LLScriptResourceConsumer::getScriptResourcePool() const { return LLScriptResourcePool::null; }
bool LLScriptResourceConsumer::switchScriptResourcePools(LLScriptResourcePool& new_pool) { return false; }
bool LLScriptResourceConsumer::canUseScriptResourcePool(const LLScriptResourcePool& resource_pool) { return false; }
bool LLScriptResourceConsumer::isInPool(const LLScriptResourcePool& resource_pool) { return false; }
void LLScriptResourceConsumer::setScriptResourcePool(LLScriptResourcePool& pool) { }
S32 LLTask::getUsedPublicURLs() const { return 0; }
void LLTask::setScriptResourcePool(LLScriptResourcePool& pool) { }
Diffstat (limited to 'indra/llmessage/llsdmessagebuilder.cpp')
-rwxr-xr-x | indra/llmessage/llsdmessagebuilder.cpp | 123 |
1 files changed, 119 insertions, 4 deletions
diff --git a/indra/llmessage/llsdmessagebuilder.cpp b/indra/llmessage/llsdmessagebuilder.cpp index a62dd04560..21937f022f 100755 --- a/indra/llmessage/llsdmessagebuilder.cpp +++ b/indra/llmessage/llsdmessagebuilder.cpp @@ -268,10 +268,125 @@ void LLSDMessageBuilder::copyFromMessageData(const LLMsgData& data) for(; dit != dend; ++dit) { - //const LLMsgVarData& mvci = *dit; - - // TODO: Copy mvci data in to block: - // (*mCurrentBlock)[varname] = v; + const LLMsgVarData& mvci = *dit; + const char* varname = mvci.getName(); + + switch(mvci.getType()) + { + case MVT_FIXED: + addBinaryData(varname, mvci.getData(), mvci.getSize()); + break; + + case MVT_VARIABLE: + { + const char end = ((const char*)mvci.getData())[mvci.getSize()-1]; // Ensure null terminated + if (mvci.getDataSize() == 1 && end == 0) + { + addString(varname, (const char*)mvci.getData()); + } + else + { + addBinaryData(varname, mvci.getData(), mvci.getSize()); + } + break; + } + + case MVT_U8: + addU8(varname, *(U8*)mvci.getData()); + break; + + case MVT_U16: + addU16(varname, *(U16*)mvci.getData()); + break; + + case MVT_U32: + addU32(varname, *(U32*)mvci.getData()); + break; + + case MVT_U64: + addU64(varname, *(U64*)mvci.getData()); + break; + + case MVT_S8: + addS8(varname, *(S8*)mvci.getData()); + break; + + case MVT_S16: + addS16(varname, *(S16*)mvci.getData()); + break; + + case MVT_S32: + addS32(varname, *(S32*)mvci.getData()); + break; + + // S64 not supported in LLSD so we just truncate it + case MVT_S64: + addS32(varname, *(S64*)mvci.getData()); + break; + + case MVT_F32: + addF32(varname, *(F32*)mvci.getData()); + break; + + case MVT_F64: + addF64(varname, *(F64*)mvci.getData()); + break; + + case MVT_LLVector3: + addVector3(varname, *(LLVector3*)mvci.getData()); + break; + + case MVT_LLVector3d: + addVector3d(varname, *(LLVector3d*)mvci.getData()); + break; + + case MVT_LLVector4: + addVector4(varname, *(LLVector4*)mvci.getData()); + break; + + case MVT_LLQuaternion: + { + LLVector3 v = *(LLVector3*)mvci.getData(); + LLQuaternion q; + q.unpackFromVector3(v); + addQuat(varname, q); + break; + } + + case MVT_LLUUID: + addUUID(varname, *(LLUUID*)mvci.getData()); + break; + + case MVT_BOOL: + addBOOL(varname, *(BOOL*)mvci.getData()); + break; + + case MVT_IP_ADDR: + addIPAddr(varname, *(U32*)mvci.getData()); + break; + + case MVT_IP_PORT: + addIPPort(varname, *(U16*)mvci.getData()); + break; + + case MVT_U16Vec3: + //treated as an array of 6 bytes + addBinaryData(varname, mvci.getData(), 6); + break; + + case MVT_U16Quat: + //treated as an array of 8 bytes + addBinaryData(varname, mvci.getData(), 8); + break; + + case MVT_S16Array: + addBinaryData(varname, mvci.getData(), mvci.getSize()); + break; + + default: + llwarns << "Unknown type in conversion of message to LLSD" << llendl; + break; + } } } } |