summaryrefslogtreecommitdiff
path: root/indra/newview/lllogchat.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/lllogchat.h')
-rw-r--r--indra/newview/lllogchat.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/indra/newview/lllogchat.h b/indra/newview/lllogchat.h
index e252cd7d41..3d3f5c4458 100644
--- a/indra/newview/lllogchat.h
+++ b/indra/newview/lllogchat.h
@@ -51,11 +51,66 @@ public:
const LLUUID& from_id,
const std::string& line);
+ /** @deprecated @see loadAllHistory() */
static void loadHistory(const std::string& filename,
void (*callback)(ELogLineType, const LLSD&, void*),
void* userdata);
+
+ static void loadAllHistory(const std::string& session_name, std::list<LLSD>& messages);
private:
static std::string cleanFileName(std::string filename);
};
+/**
+ * Formatter for the plain text chat log files
+ */
+class LLChatLogFormatter
+{
+public:
+ LLChatLogFormatter(const LLSD& im) : mIM(im) {}
+ virtual ~LLChatLogFormatter() {};
+
+ friend std::ostream& operator<<(std::ostream& str, const LLChatLogFormatter& formatter)
+ {
+ formatter.format(formatter.mIM, str);
+ return str;
+ }
+
+protected:
+
+ /**
+ * Format an instant message to a stream
+ * Timestamps and sender names are required
+ * New lines of multilined messages are prepended with a space
+ */
+ void format(const LLSD& im, std::ostream& ostr) const;
+
+ LLSD mIM;
+};
+
+/**
+ * Parser for the plain text chat log files
+ */
+class LLChatLogParser
+{
+public:
+
+ /**
+ * Parse a line from the plain text chat log file
+ * General plain text log format is like: "[timestamp] [name]: [message]"
+ * [timestamp] and [name] are optional
+ * Examples of plain text chat log lines:
+ * "[2009/11/20 2:53] Igor ProductEngine: howdy"
+ * "Igor ProductEngine: howdy"
+ * "Dserduk ProductEngine is Online"
+ *
+ * @return false if failed to parse mandatory data - message text
+ */
+ static bool parse(std::string& raw, LLSD& im);
+
+protected:
+ LLChatLogParser();
+ virtual ~LLChatLogParser() {};
+};
+
#endif