Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
GrayLib::cLogThread Class Reference

#include <cLogThread.h>

Inheritance diagram for GrayLib::cLogThread:
Gray::cLogNexus Gray::cLogAppender GrayLib::cThreadNamed< cLogThread > Gray::cLogProcessor IUnknown Gray::cLogProcessor GrayLib::cThreadChecked Gray::ILogProcessor Gray::cStreamOutput Gray::ILogProcessor Gray::cStreamOutput GrayLib::cThread Gray::cStreamBase Gray::cStreamBase GrayLib::cThreadBase Gray::cRefBase Gray::cThreadState Gray::CObject Gray::cThreadId IUnknown

Public Member Functions

 cLogThread (void)
 
virtual ~cLogThread (void)
 
 STDMETHOD_ (cString, get_Name)() const override
 
virtual HRESULT addEvent (cLogEvent *pEvent) override
 ILogProcessor. More...
 
virtual HRESULT FlushLogs () override
 
 IUNKNOWN_DISAMBIG (cRefBase)
 
 UNITTEST_FRIEND (cLogThread)
 
- Public Member Functions inherited from Gray::cLogNexus
 cLogNexus (LOG_ATTR_MASK_t uAttrMask=LOG_ATTR_ALL_MASK, LOGLEV_TYPE eLogLevel=LOGLEV_ANY)
 
virtual ~cLogNexus ()
 
virtual const cLogNexusget_ThisLogNexus () const override
 
virtual bool IsLogged (LOG_ATTR_MASK_t uAttrMask, LOGLEV_TYPE eLogLevel) const override
 
cLogAppenderEnumAppender (ITERATE_t i)
 
const cLogAppenderEnumAppender (ITERATE_t i) const
 
bool HasAppender (cLogAppender *pAppender, bool bDescend=false) const
 
HRESULT AddAppender (cLogAppender *pAppender)
 
bool RemoveAppender (cLogAppender *pAppender, bool bDescend=false)
 
cLogAppenderFindAppenderType (const TYPEINFO_t &rType, bool bDescend=false) const
 
bool RemoveAppenderType (const TYPEINFO_t &rType, bool bDescend=true)
 
- Public Member Functions inherited from Gray::cLogProcessor
virtual ~cLogProcessor ()
 
HRESULT addEventS (LOG_ATTR_MASK_t uAttrMask, LOGLEV_TYPE eLogLevel, cStringL sMsg, cStringL sContext="")
 
HRESULT addEventV (LOG_ATTR_MASK_t uAttrMask, LOGLEV_TYPE eLogLevel, const LOGCHAR_t *pszFormat, va_list vargs)
 
HRESULT _cdecl addEventF (LOG_ATTR_MASK_t uAttrMask, LOGLEV_TYPE eLogLevel, const LOGCHAR_t *pszFormat,...)
 
HRESULT _cdecl addInfoF (const LOGCHAR_t *pszFormat,...)
 
HRESULT _cdecl addDebugErrorF (const LOGCHAR_t *pszFormat,...)
 
HRESULT _cdecl addDebugWarnF (const LOGCHAR_t *pszFormat,...)
 
HRESULT _cdecl addDebugInfoF (const LOGCHAR_t *pszFormat,...)
 
HRESULT _cdecl addDebugTraceF (const LOGCHAR_t *pszFormat,...)
 
- Public Member Functions inherited from Gray::cStreamOutput
 cStreamOutput () noexcept
 
virtual ~cStreamOutput ()
 
virtual HRESULT WriteX (const void *pData, size_t nDataSize)
 
HRESULT WriteT (const void *pVal, size_t nDataSize)
 
template<typename TYPE >
HRESULT WriteT (TYPE val)
 
HRESULT WriteSize (size_t nSize)
 
HRESULT WriteHashCode (HASHCODE_t nHashCode)
 
HRESULT WriteN (const void *pBuffer, size_t nSize)
 
template<typename _CH >
HRESULT WriteStringN (const _CH *pszStr)
 
template<typename _CH >
HRESULT WriteCharRepeat (_CH nChar, int nCount=1)
 
StrLen_t VPrintf (const char *pszFormat, va_list args)
 
StrLen_t VPrintf (const wchar_t *pszFormat, va_list args)
 
StrLen_t _cdecl Printf (const char *pszFormat,...)
 
StrLen_t _cdecl Printf (const wchar_t *pszFormat,...)
 
HRESULT WriteStream (cStreamInput &sInp, STREAM_POS_t nSizeMax=k_FILE_BLOCK_SIZE, IStreamProgressCallback *pProgress=nullptr, TIMESYSD_t nTimeout=0)
 Copy cStreamInput to this stream. More...
 
virtual HRESULT FlushX ()
 
- Public Member Functions inherited from Gray::cStreamBase
virtual ~cStreamBase ()
 
virtual STREAM_SEEKRET_t Seek (STREAM_OFFSET_t iOffset, SEEK_ORIGIN_TYPE eSeekOrigin=SEEK_Set)
 
void SeekToBegin ()
 
STREAM_POS_t SeekToEnd ()
 
virtual STREAM_POS_t GetPosition () const
 
virtual STREAM_POS_t GetLength () const
 
- Public Member Functions inherited from Gray::cLogAppender
 cLogAppender ()
 
virtual ~cLogAppender ()
 
bool RemoveAppenderThis ()
 Remove myself from the list of valid appenders. More...
 
- Public Member Functions inherited from GrayLib::cThreadNamed< cLogThread >
virtual HRESULT CreateThread (DWORD dwCreationFlags=0) override
 
- Public Member Functions inherited from GrayLib::cThreadChecked
 cThreadChecked ()
 
virtual ~cThreadChecked ()
 
virtual bool CheckStuckThread (TIMESYSD_t iMilliSecTilStuck, bool bTerminateAndRestart)
 called by external thread. More...
 
UINT get_ThreadTicks () const
 
bool isCriticalWait () const
 
void ChangeCriticalWait (int iDelta)
 
- Public Member Functions inherited from GrayLib::cThread
 cThread ()
 
virtual ~cThread ()
 
bool isValidThreadHandle () const noexcept
 
THREADID_t get_HashCode () const noexcept
 
virtual bool isValidCheck () const noexcept
 < memory allocation and structure definitions are valid. More...
 
 STDMETHOD_ (cString, get_Name)() const
 override memory allocation and structure definitions are valid. More...
 
bool isThreadSleeping () const noexcept
 
THREAD_EXITCODE_t get_ExitCodeThread () const
 
int get_ThreadPriority () const
 
bool put_ThreadPriority (int nPriority)
 
bool SuspendThread ()
 
bool ResumeThread ()
 
virtual HRESULT SleepThread (TIMESYSD_t dwWaitMillisec=1, bool bAlertable=false)
 
virtual bool RequestStopThread (bool bWillWait=false) noexcept override
 
bool ExitCurrentThread (THREAD_EXITCODE_t nExitCode=THREAD_EXITCODE_OK)
 
bool WaitForThreadExit (TIMESYSD_t nMilliSec=cTimeSys::k_FREQ)
 
THREAD_EXITCODE_t WaitForThreadExitCode (TIMESYSD_t iTimeMSec=cTimeSys::k_FREQ)
 
bool TerminateThread (THREAD_EXITCODE_t iExitCode=THREAD_EXITCODE_ERR, TIMESYSD_t nMilliSec=0)
 
void AttachToCurrentThread ()
 
HRESULT CreateThread (THREAD_FUNC_t pEntryProc, void *pArgs, DWORD dwCreationFlags=0)
 
void CloseThread ()
 
- Public Member Functions inherited from GrayLib::cThreadBase
 cThreadBase () noexcept
 
virtual ~cThreadBase ()
 
- Public Member Functions inherited from Gray::CObject
virtual ~CObject ()
 
virtual void AssertValid () const
 < memory allocation and structure definitions are valid. More...
 
virtual void Serialize (cArchive &a)
 
- Public Member Functions inherited from Gray::cThreadId
 cThreadId (THREADID_t nThreadId=k_NULL) noexcept
 
THREADID_t GetThreadId () const noexcept
 
THREADID_t get_HashCode () const noexcept
 
bool isCurrentThread () const noexcept
 
bool isValidId () const noexcept
 
void InitCurrentId () noexcept
 
- Public Member Functions inherited from Gray::cRefBase
 cRefBase (int iRefCount=0) noexcept
 
virtual ~cRefBase ()
 
int get_RefCount () const noexcept
 
HASHCODE_t get_HashCode () const noexcept
 
 STDMETHOD_ (HASHCODE_t, get_HashCodeX)() const noexcept
 
virtual void onFinalRelease ()
 
bool isValidObj () const noexcept
 
 STDMETHOD_ (ULONG, AddRef)(void) override
 
 STDMETHOD_ (ULONG, Release)(void) override
 
STDMETHOD() QueryInterface (const IID &riid, void __RPC_FAR *__RPC_FAR *ppvObject) override
 
void IncRefCount ()
 
void DecRefCount ()
 
bool isStaticConstruct () const noexcept
 
void StaticConstruct ()
 
void StaticDestruct ()
 
bool isDestructing () noexcept
 
void SetDestructing ()
 
- Public Member Functions inherited from Gray::cThreadState
 cThreadState () noexcept
 
bool isThreadRunning () const noexcept
 
bool isThreadStopping () const noexcept
 

Protected Member Functions

virtual void WakeThread () override
 
virtual bool ThreadTick () override
 
- Protected Member Functions inherited from Gray::cLogAppender
virtual HRESULT WriteString (const LOGCHAR_t *pszMsg) override
 
virtual HRESULT WriteString (const wchar_t *pszMsg) override
 
- Protected Member Functions inherited from GrayLib::cThreadChecked
virtual void onThreadCreate () override
 Notification that the thread has started or stopped. More...
 
- Protected Member Functions inherited from GrayLib::cThread
virtual THREAD_EXITCODE_t Run ()
 WorkerThreadProc. More...
 
THREAD_EXITCODE_t RunDirectly ()
 
virtual void onThreadExit (THREAD_EXITCODE_t nExitCode)
 OnExit. More...
 
void onThreadTerminated (THREAD_EXITCODE_t nExitCode)
 

Additional Inherited Members

- Static Public Member Functions inherited from GrayLib::cThreadChecked
static cThreadChecked *GRAYCALL GetCurrentThreadChecked ()
 
- Static Public Member Functions inherited from GrayLib::cThread
static cThread *GRAYCALL GetCurrentThread ()
 
static bool GRAYCALL IsCurrentThreadStopping ()
 
static void GRAYCALL RequestStopThreadArray (bool bWillWait, cThread **ppThreads, size_t nThreads)
 
static void GRAYCALL TerminateThreadArray (THREAD_EXITCODE_t nExitCode, TIMESYSD_t iTimeMSec, cThread **ppThreads, size_t nThreads)
 
- Static Public Member Functions inherited from Gray::cThreadId
static THREADID_t GetCurrentId () noexcept
 
static bool IsValidId (THREADID_t id) noexcept
 
static bool IsEqualId (THREADID_t a, THREADID_t b) noexcept
 
static void SleepCurrent (TIMESYS_t uMs=cTimeSys::k_FREQ) noexcept
 
- Public Attributes inherited from Gray::cLogNexus
cLogEventParams m_LogFilter
 Union filter what goes out to ALL appenders. More...
 
cLogThrottle m_LogThrottle
 Measure how fast messages are going. More...
 
cThreadLockCount m_LockLog
 serialize multiple threads for m_aAppenders More...
 
- Public Attributes inherited from GrayLib::cThreadChecked
UINT m_nThreadTicksLast
 checked periodically by outside observer. More...
 
cTimeSys m_tStart
 When did thread first run ? More...
 
TIMESYS_t m_timeLastChanged
 Last outside detected tick change time. More...
 
UINT m_nRecoveryStage
 What have we done about being stuck ? More...
 
- Static Public Attributes inherited from Gray::cStreamBase
static const BYTE k_SIZE_MASK = 0x80
 Used for WriteSize() More...
 
static const size_t k_FILE_BLOCK_SIZE = (32 * 1024)
 default arbitrary transfer block size. more than this is NOT more efficient. More...
 
- Static Public Attributes inherited from Gray::cThreadId
static const THREADID_t k_NULL = 0
 Not a valid thread Id. More...
 
- Static Protected Member Functions inherited from GrayLib::cThreadNamed< cLogThread >
static THREAD_EXITCODE_t _stdcall EntryProc (void *pThisThread)
 
- Static Protected Member Functions inherited from GrayLib::cThread
static THREAD_EXITCODE_t _stdcall EntryProc (void *pThisThread)
 _WorkerThreadProc More...
 
- Protected Attributes inherited from Gray::cLogNexus
cArrayIUnk< cLogAppenderm_aAppenders
 where do the log messages go? child appenders. More...
 
- Protected Attributes inherited from GrayLib::cThreadChecked
UINT m_nThreadTicks
 periodically increment this to make sure the thread is alive! More...
 
- Protected Attributes inherited from GrayLib::cThread
bool m_bThreadSleeping
 Idle worker threads waiting for something to do. inside Sleep() or WaitForSingleObject() More...
 
bool m_bThreadSuspended
 May be resumed. inside Suspend() -> Resume() More...
 
- Protected Attributes inherited from GrayLib::cThreadBase
THREADHANDLE_t m_hThread
 there may be many handles to the same THREADID_t in _WIN32. I must call CloseThread() on this. More...
 
- Protected Attributes inherited from Gray::cThreadId
THREADID_t m_dwThreadId
 unique thread id. i.e. stack base pointer. (Use the MFC name) More...
 
- Protected Attributes inherited from Gray::cThreadState
bool m_bThreadRunning
 called CreateThread() onThreadCreate(), and inside Run(), until onThreadExit() More...
 
volatile bool m_bThreadStopping
 trying to stop the thread nicely. Do this before TerminateThread() More...
 

Detailed Description

A log appender that serializes/queues other appenders (from different threads) on to a single thread. cLogThread should be added as an appender to cLogMgr::I(), then other appenders added(chained) to this. assume this is cThread based.

Constructor & Destructor Documentation

◆ cLogThread()

GrayLib::cLogThread::cLogThread ( void  )

Thread must be manually started via CreateThread().

◆ ~cLogThread()

GrayLib::cLogThread::~cLogThread ( void  )
virtual

virtuals don't work in destruct so do this at the highest level.

Member Function Documentation

◆ addEvent()

HRESULT GrayLib::cLogThread::addEvent ( cLogEvent pEvent)
overridevirtual

ILogProcessor.

add an event to the queue to be processed serially later on a separate thread.

Reimplemented from Gray::cLogAppender.

◆ FlushLogs()

HRESULT GrayLib::cLogThread::FlushLogs ( )
overridevirtual

Reimplemented from Gray::cLogNexus.

◆ IUNKNOWN_DISAMBIG()

GrayLib::cLogThread::IUNKNOWN_DISAMBIG ( cRefBase  )

◆ STDMETHOD_()

GrayLib::cLogThread::STDMETHOD_ ( cString  ,
get_Name   
) const
inlineoverride

◆ ThreadTick()

bool GrayLib::cLogThread::ThreadTick ( )
overrideprotectedvirtual

Serialize incoming log messages and send them where they want to go.

Returns
true = thread should keep running. false = thread should exit.

Reimplemented from GrayLib::cThreadChecked.

◆ UNITTEST_FRIEND()

GrayLib::cLogThread::UNITTEST_FRIEND ( cLogThread  )

◆ WakeThread()

void GrayLib::cLogThread::WakeThread ( )
overrideprotectedvirtual

Reimplemented from GrayLib::cThread.


The documentation for this class was generated from the following files: