1 // Copyright 2001-2019 Crytek GmbH / Crytek Group. All rights reserved.
8 ///////////////////////////////////////////////////////////////////////////////
13 #include <CrySystem/TimeValue.h>
15 //#include "VectorMap.h"
16 #include <CryMemory/STLPoolAllocator.h>
19 typedef uint32 NetTimerId
;
20 typedef void (* NetTimerCallback
)(NetTimerId
, void*, CTimeValue
);
22 static const int TIMER_HERTZ
= 250;
29 NetTimerId
AddTimer(CTimeValue when
, NetTimerCallback callback
, void* pUserData
, char* pFile
, size_t line
, char* pName
);
31 NetTimerId
AddTimer(CTimeValue when
, NetTimerCallback callback
, void* pUserData
);
33 void* CancelTimer(NetTimerId
& id
);
36 void GetMemoryStatistics(ICrySizer
* pSizer
, bool countingThis
= false)
38 SIZER_COMPONENT_NAME(pSizer
, "CNetTimer");
41 pSizer
->AddContainer(m_callbacks
);
45 static const int TIMER_SLOTS
= 32; // 0.128 seconds
46 int m_timerCallbacks
[TIMER_SLOTS
];
48 #if USE_SYSTEM_ALLOCATOR
49 std::multimap
<CTimeValue
, int, std::less
<CTimeValue
>> m_slowCallbacks
;
51 std::multimap
<CTimeValue
, int, std::less
<CTimeValue
>, stl::STLPoolAllocator
<std::pair
<const CTimeValue
, int>, stl::PoolAllocatorSynchronizationSinglethreaded
>> m_slowCallbacks
;
56 SCallbackInfo(NetTimerCallback callback
, void* pUserData
)
58 this->callback
= callback
;
59 this->pUserData
= pUserData
;
70 NetTimerCallback callback
;
77 int curSlotWhenScheduled
;
81 typedef std::vector
<int, stl::STLGlobalAllocator
<int>> TGlobalIntVector
;
83 std::vector
<SCallbackInfo
, stl::STLGlobalAllocator
<SCallbackInfo
>> m_callbacks
;
84 TGlobalIntVector m_freeCallbacks
;
85 TGlobalIntVector m_execCallbacks
;
87 CTimeValue m_lastExec
;
89 CTimeValue m_epoch
; // just for debugging
94 ///////////////////////////////////////////////////////////////////////////////
96 ///////////////////////////////////////////////////////////////////////////////
98 // Accurate net timers
101 class CAccurateNetTimer
106 NetTimerId
AddTimer(CTimeValue when
, NetTimerCallback callback
, void* pUserData
, char* pFile
, size_t line
, char* pName
);
108 NetTimerId
AddTimer(CTimeValue when
, NetTimerCallback callback
, void* pUserData
);
109 #endif // TIMER_DEBUG
110 void* CancelTimer(NetTimerId
& id
);
113 void GetMemoryStatistics(ICrySizer
* pSizer
, bool countingThis
= false)
115 SIZER_COMPONENT_NAME(pSizer
, "CAccurateNetTimer");
118 pSizer
->AddContainer(m_callbacks
);
124 SCallbackInfo(NetTimerCallback callback
, void* pUserData
)
126 this->callback
= callback
;
127 this->pUserData
= pUserData
;
136 NetTimerCallback callback
;
139 CTimeValue schedTime
;
141 CTimeValue timeAdded
;
142 CryFixedStringT
<256> location
;
143 CryFixedStringT
<128> name
;
147 typedef std::vector
<int, stl::STLGlobalAllocator
<int>> TGlobalIntVector
;
149 std::vector
<SCallbackInfo
, stl::STLGlobalAllocator
<SCallbackInfo
>> m_callbacks
;
150 TGlobalIntVector m_freeCallbacks
;
151 CTimeValue m_nextUpdate
;
155 ///////////////////////////////////////////////////////////////////////////////