summaryrefslogtreecommitdiff
path: root/indra/llmessage/llinstantmessage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llmessage/llinstantmessage.cpp')
-rw-r--r--indra/llmessage/llinstantmessage.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/indra/llmessage/llinstantmessage.cpp b/indra/llmessage/llinstantmessage.cpp
index 944785c3a5..28886108ea 100644
--- a/indra/llmessage/llinstantmessage.cpp
+++ b/indra/llmessage/llinstantmessage.cpp
@@ -16,6 +16,7 @@
#include "lluuid.h"
#include "llsd.h"
#include "llsdserialize.h"
+#include "llsdutil.h"
#include "llmemory.h"
#include "message.h"
@@ -290,6 +291,35 @@ void LLIMInfo::unpackMessageBlock(LLMessageSystem* msg)
}
}
+LLSD im_info_to_llsd(LLPointer<LLIMInfo> im_info)
+{
+ LLSD param_version;
+ param_version["version"] = 1;
+ LLSD param_message;
+ param_message["from_id"] = im_info->mFromID;
+ param_message["from_group"] = im_info->mFromGroup;
+ param_message["to_id"] = im_info->mToID;
+ param_message["from_name"] = im_info->mName;
+ param_message["message"] = im_info->mMessage;
+ param_message["type"] = (S32)im_info->mIMType;
+ param_message["id"] = im_info->mID;
+ param_message["timestamp"] = (S32)im_info->mTimeStamp;
+ param_message["offline"] = (S32)im_info->mOffline;
+ param_message["parent_estate_id"] = (S32)im_info->mParentEstateID;
+ param_message["region_id"] = im_info->mRegionID;
+ param_message["position"] = ll_sd_from_vector3(im_info->mPosition);
+ if (im_info->mData) param_message["data"] = im_info->mData;
+ LLSD param_agent;
+ param_agent["agent_id"] = im_info->mFromID;
+
+ LLSD params;
+ params.append(param_version);
+ params.append(param_message);
+ params.append(param_agent);
+
+ return params;
+}
+
LLPointer<LLIMInfo> LLIMInfo::clone()
{
return new LLIMInfo(