summaryrefslogtreecommitdiff
path: root/indra/newview/lllogchat.h
diff options
context:
space:
mode:
authorprep <prep@lindenlab.com>2010-10-28 13:54:43 -0400
committerprep <prep@lindenlab.com>2010-10-28 13:54:43 -0400
commita91bff4036bbdd0f32722ed573f9f44ab00f00f0 (patch)
treea2ee17189b530ace49c886d8a8acc4deb32620b5 /indra/newview/lllogchat.h
parent53d5fd1e9bb59868b793f9bef0529cd62ca70126 (diff)
parent32bcdd11990e1fa5126a15a2bd22249162c0806a (diff)
merge
Diffstat (limited to 'indra/newview/lllogchat.h')
-rw-r--r--indra/newview/lllogchat.h40
1 files changed, 33 insertions, 7 deletions
diff --git a/indra/newview/lllogchat.h b/indra/newview/lllogchat.h
index 8b1cc3484f..6958d56311 100644
--- a/indra/newview/lllogchat.h
+++ b/indra/newview/lllogchat.h
@@ -41,22 +41,49 @@ public:
};
static std::string timestamp(bool withdate = false);
static std::string makeLogFileName(std::string(filename));
-
- // Log a single line item to the appropriate chat file
- static void saveHistory(const std::string& filename, const LLChat& chat);
-
- // Prefer the above version - it saves more metadata about the item
static void saveHistory(const std::string& filename,
const std::string& from,
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& file_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
@@ -74,7 +101,7 @@ public:
*
* @return false if failed to parse mandatory data - message text
*/
- static bool parse(const std::string& raw, LLSD& im);
+ static bool parse(std::string& raw, LLSD& im);
protected:
LLChatLogParser();
@@ -86,6 +113,5 @@ extern const std::string IM_TIME; //("time");
extern const std::string IM_TEXT; //("message");
extern const std::string IM_FROM; //("from");
extern const std::string IM_FROM_ID; //("from_id");
-extern const std::string IM_SOURCE_TYPE; //("source_type");
#endif