26 pFirstEvent = pLastEvent =
new Event();
28 pFirstEvent->Next =
nullptr;
30 ZeroMem(&pCallbacks,
sizeof(pCallbacks));
38 CStdLock PushLock(&EventPushCSec), PopLock(&EventPopCSec);
40 while (PopEvent(
nullptr,
nullptr)) {}
43 pFirstEvent = pLastEvent =
nullptr;
55 if (!Scheduler.
Start())
75 if (!pLastEvent)
return false;
77 Event *pEvent =
new Event;
78 pEvent->Type = eEvent;
83 pEvent->Next =
nullptr;
85 pLastEvent->Next = pEvent;
94 double AvgNetEvDelay = 0;
100 if (!pFirstEvent)
return false;
102 Event *pEvent = pFirstEvent->Next;
103 if (!pEvent)
return false;
106 *pEventType = pEvent->Type;
108 *ppData = pEvent->Data;
115 pFirstEvent = pEvent;
124 while (PopEvent(&eEventType, &pEventData))
132 pLog.
Take(
reinterpret_cast<char *
>(pEventData));
151 std::unique_ptr<std::function<void ()> > func(
static_cast<std::function<
void()
>*>(pEventData));
158 if (pCallbacks[eEventType])
159 pCallbacks[eEventType]->
OnThreadEvent(eEventType, pEventData);
168 va_list lst; va_start(lst, szMessage);
177 va_list lst; va_start(lst, szMessage);
186 va_list lst; va_start(lst, szMessage);
195 va_list lst; va_start(lst, szMessage);
C4Application Application
bool LogSilent(const char *szMessage, bool fConsole)
bool Log(const char *szMessage)
bool DebugLog(const char *strMessage)
bool LogFatal(const char *szMessage)
std::enable_if< std::is_pod< T >::value >::type ZeroMem(T *lpMem, size_t dwSize)
StdStrBuf FormatStringV(const char *szFmt, va_list args)
virtual void OnThreadEvent(C4InteractiveEventType eEvent, void *pEventData)=0
bool ThreadLogFatal(const char *szMessage,...) GNUC_FORMAT_ATTRIBUTE_O
bool ThreadLogDebug(const char *szMessage,...) GNUC_FORMAT_ATTRIBUTE_O
void RemoveProc(StdSchedulerProc *pProc)
bool ThreadLog(const char *szMessage,...) GNUC_FORMAT_ATTRIBUTE_O
bool AddProc(StdSchedulerProc *pProc)
bool ThreadLogS(const char *szMessage,...) GNUC_FORMAT_ATTRIBUTE_O
bool PushEvent(C4InteractiveEventType eEventType, void *pData=nullptr)
void SetNotify(class C4InteractiveThread *pnNotify)
bool Execute(int iTimeout, pollfd *readyfds) override
static C4TimeMilliseconds Now()
void Remove(StdSchedulerProc *pProc)
bool hasProc(StdSchedulerProc *pProc)
void Add(StdSchedulerProc *pProc)
void Remove(StdSchedulerProc *pProc)
void Add(StdSchedulerProc *pProc)
const char * getData() const