// // Copyright 2005 The Android Open Source Project // // Class to hold a single log message. Not thread safe. // #ifndef _SIM_LOG_MESSAGE_H #define _SIM_LOG_MESSAGE_H #include "utils.h" #include "LogBundle.h" /* * Hold a single log message. * * To reduce malloc strain we could over-allocate the object and tuck the * message text into the object storage. On this off chance this becomes * important, the implementation keeps its constructor private. */ class LogMessage { public: ~LogMessage(void); static LogMessage* Create(const android_LogBundle* pBundle); static LogMessage* Create(const char* msg); /* the total length of text added to the text ctrl */ int GetTextCtrlLen(void) const { return mTextCtrlLen; } void SetTextCtrlLen(int len) { mTextCtrlLen = len; } /* log pool */ LogMessage* GetPrev(void) const { return mpPrev; } void SetPrev(LogMessage* pPrev) { mpPrev = pPrev; } LogMessage* GetNext(void) const { return mpNext; } void SetNext(LogMessage* pNext) { mpNext = pNext; } int GetFootprint(void) const { return mFootprint; } /* message contents */ time_t GetWhen(void) const { return mWhen; } android_LogPriority GetPriority(void) const { return mPriority; } pid_t GetPid(void) const { return mPid; } const char* GetTag(void) const { return mTag; } const char* GetMsg(void) const { return mMsg; } bool GetInternal(void) const { return mInternal; } void Acquire(void) { mRefCnt++; } void Release(void) { if (!--mRefCnt) delete this; } private: LogMessage(void); LogMessage(const LogMessage& src); // not implemented LogMessage& operator=(const LogMessage& src); // not implemented /* log message contents */ time_t mWhen; android_LogPriority mPriority; pid_t mPid; char* mTag; char* mMsg; /* additional goodies */ int mRefCnt; // reference count bool mInternal; // message generated internally by us? int mFootprint; // approx. size of this object in memory int mTextCtrlLen; // #of characters req'd in text ctrl LogMessage* mpPrev; // link to previous item in log pool LogMessage* mpNext; // link to next item in log pool }; #endif // _SIM_LOG_MESSAGE_H