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

#include <cJobFiber.h>

Inheritance diagram for GrayLib::cJobFiber:
GrayLib::cThreadFiber GrayLib::cThreadNamed< cThreadFiber > GrayLib::cThreadChecked GrayLib::cThread GrayLib::cThreadBase Gray::cRefBase Gray::cThreadState Gray::CObject Gray::cThreadId IUnknown

Public Member Functions

 cJobFiber () noexcept
 
virtual ~cJobFiber ()
 
 STDMETHOD_ (cString, get_Name)() const override
 
cJobPtr get_Job () const
 
HRESULT SleepJob (TIMESYSD_t mSec)
 
void AssignJob (cJobBase *pJob, cJobFiberMgr *pParentSet)
 
 UNITTEST2_PREDEF (cJobFiber)
 
- Public Member Functions inherited from GrayLib::cThreadFiber
 cThreadFiber () noexcept
 
virtual ~cThreadFiber ()
 
 STDMETHOD_ (cString, get_Name)() const override
 
bool IsFiberRunning () const noexcept
 
HRESULT RunFiber (TIMESYSD_t dwTimeMin=0, TIMESYSD_t dwTimeWait=0, TIMESYSD_t dwTimeHardMax=cTimeSys::k_INF)
 
virtual HRESULT SleepThread (TIMESYSD_t dwWaitMillisec, bool bAlertable=false) override
 
 UNITTEST2_PREDEF (cThreadFiber)
 
- Public Member Functions inherited from GrayLib::cThreadNamed< cThreadFiber >
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 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

void RemoveCurrentJob ()
 
virtual bool ThreadTick () override
 
virtual void onThreadExit (THREAD_EXITCODE_t nExitCode) override
 OnExit. More...
 
- Protected Member Functions inherited from GrayLib::cThreadFiber
void ClearTimeRun () noexcept
 
HRESULT YieldFiber (TIMESYSD_t dwTimeWait=cTimeSys::k_INF)
 force fiber to sleep. called inside ThreadTick() More...
 
virtual void WakeThread () 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 ()
 
void onThreadTerminated (THREAD_EXITCODE_t nExitCode)
 

Additional Inherited Members

- Static Public Member Functions inherited from GrayLib::cThreadFiber
static cThreadFiber *GRAYCALL GetCurrentFiber ()
 
- 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 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::cThreadId
static const THREADID_t k_NULL = 0
 Not a valid thread Id. More...
 
- Static Protected Member Functions inherited from GrayLib::cThreadFiber
static HRESULT GRAYCALL SignalObjectAndWaitX (cSysEvent &Ready1, cSysEvent &Wait1, TIMESYSD_t mSecTimeout)
 
- Static Protected Member Functions inherited from GrayLib::cThreadNamed< cThreadFiber >
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 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 fiber/thread that can/is running a SINGLE cJobBase/script. can run for as long or short as i want.

Note
May or may not have an attached cJobBase. May be Idle or active. NOT concurrent jobs. these are time sliced fibers on the current thread cJobFiberMgr.

Constructor & Destructor Documentation

◆ cJobFiber()

GrayLib::cJobFiber::cJobFiber ( )
noexcept

◆ ~cJobFiber()

GrayLib::cJobFiber::~cJobFiber ( )
virtual

Member Function Documentation

◆ AssignJob()

void GrayLib::cJobFiber::AssignJob ( cJobBase pJob,
cJobFiberMgr pParentSet 
)
inline

◆ get_Job()

cJobPtr GrayLib::cJobFiber::get_Job ( ) const
inline

◆ onThreadExit()

void GrayLib::cJobFiber::onThreadExit ( THREAD_EXITCODE_t  nExitCode)
overrideprotectedvirtual

OnExit.

still can still use m_hThread to get the threads return value!

Note
m_hThread is still valid.

Reimplemented from GrayLib::cThreadFiber.

◆ RemoveCurrentJob()

void GrayLib::cJobFiber::RemoveCurrentJob ( )
protected

◆ SleepJob()

HRESULT GrayLib::cJobFiber::SleepJob ( TIMESYSD_t  mSec)

Make the current job on this thread wait for a while.

◆ STDMETHOD_()

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

◆ ThreadTick()

bool GrayLib::cJobFiber::ThreadTick ( )
overrideprotectedvirtual
Returns
true = thread should keep running. false = thread should exit. We only get time if we are scheduled to.

Reimplemented from GrayLib::cThreadFiber.

◆ UNITTEST2_PREDEF()

GrayLib::cJobFiber::UNITTEST2_PREDEF ( cJobFiber  )

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