From 72c4d73706267a32bb31d93e14425b1c0c8a5715 Mon Sep 17 00:00:00 2001 From: RevolutionSmythe Date: Sat, 23 Oct 2010 20:51:07 -0500 Subject: Merges the Message log and Message builder from Inertia in. --- linden/indra/llmessage/llmessagelog.cpp | 54 +++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 linden/indra/llmessage/llmessagelog.cpp (limited to 'linden/indra/llmessage/llmessagelog.cpp') diff --git a/linden/indra/llmessage/llmessagelog.cpp b/linden/indra/llmessage/llmessagelog.cpp new file mode 100644 index 0000000..965b8c0 --- /dev/null +++ b/linden/indra/llmessage/llmessagelog.cpp @@ -0,0 +1,54 @@ +// +#include "llmessagelog.h" + +LLMessageLogEntry::LLMessageLogEntry(EType type, LLHost from_host, LLHost to_host, U8* data, S32 data_size) +: mType(type), + mFromHost(from_host), + mToHost(to_host), + mDataSize(data_size) +{ + if(data) + { + mData.resize(data_size); + memcpy(&(mData[0]), data, data_size); + } +} +LLMessageLogEntry::LLMessageLogEntry(EType type, LLHost from_host, LLHost to_host, std::vector data, S32 data_size) +: mType(type), + mFromHost(from_host), + mToHost(to_host), + mDataSize(data_size), + mData(data) +{ +} +LLMessageLogEntry::~LLMessageLogEntry() +{ +} +U32 LLMessageLog::sMaxSize = 4096; // testzone fixme todo boom +std::deque LLMessageLog::sDeque; +void (*(LLMessageLog::sCallback))(LLMessageLogEntry); +void LLMessageLog::setMaxSize(U32 size) +{ + sMaxSize = size; + while(sDeque.size() > sMaxSize) + sDeque.pop_front(); +} +void LLMessageLog::setCallback(void (*callback)(LLMessageLogEntry)) +{ + sCallback = callback; +} +void LLMessageLog::log(LLHost from_host, LLHost to_host, U8* data, S32 data_size) +{ + LLMessageLogEntry entry = LLMessageLogEntry(LLMessageLogEntry::TEMPLATE, from_host, to_host, data, data_size); + if(!entry.mDataSize || !entry.mData.size()) return; + if(sCallback) sCallback(entry); + if(!sMaxSize) return; + sDeque.push_back(entry); + if(sDeque.size() > sMaxSize) + sDeque.pop_front(); +} +std::deque LLMessageLog::getDeque() +{ + return sDeque; +} +// -- cgit v1.1