#include <TimeWheelBase.h>
Onikiri::TimeWheelBaseに対する継承グラフ
Public 型 | |
typedef EventPtr | ListNode |
typedef EventList | ListType |
Public メソッド | |
virtual void | AddEvent (const ListNode &evnt, int time) |
const ListType & | CurrentEvents () |
virtual void | End () |
const ListType & | EventsAfterTime (int time) |
s64 | GetNow () const |
int | GetWheelSize () const |
PARAM_ENTRY ("@Size", m_size) | |
virtual void | Tick () |
TimeWheelBase () | |
virtual | ~TimeWheelBase () |
Protected メソッド | |
int | IndexAfterTime (int time) |
Protected 変数 | |
EventWheel | m_eventWheel |
TimeWheelBase.h の 48 行で定義されています。
TimeWheelBase.h の 53 行で定義されています。
TimeWheelBase.h の 54 行で定義されています。
TimeWheelBase::TimeWheelBase | ( | ) |
TimeWheelBase.cpp の 45 行で定義されています。
参照先 Onikiri::ParamExchange::LoadParam()・m_eventWheel・Onikiri::EventWheel::Resize().
00045 : 00046 m_current(0), 00047 m_size(0), 00048 m_now(0) 00049 { 00050 LoadParam(); 00051 m_eventWheel.Resize( m_size ); 00052 }
関数の呼び出しグラフ:
TimeWheelBase::~TimeWheelBase | ( | ) | [virtual] |
TimeWheelBase.cpp の 54 行で定義されています。
参照先 Onikiri::ParamExchange::ReleaseParam().
00055 { 00056 ReleaseParam(); 00057 }
関数の呼び出しグラフ:
void TimeWheelBase::AddEvent | ( | const ListNode & | evnt, | |
int | time | |||
) | [virtual] |
TimeWheelBase.cpp の 59 行で定義されています。
参照先 Onikiri::EventList::AddEvent()・ASSERT・Onikiri::ClockedResourceBase::GetCurrentPhase()・Onikiri::EventWheel::GetEventList()・IndexAfterTime()・m_eventWheel・Onikiri::ClockedResourceBase::PHASE_END・Onikiri::ClockedResourceBase::PHASE_UPDATE.
参照元 Onikiri::Op::AddEvent()・Onikiri::CacheMissedAccessList::AddList()・Onikiri::CacheAccessRequestQueue::PushAccess().
00060 { 00061 ASSERT( 00062 ( GetCurrentPhase() == PHASE_UPDATE || 00063 GetCurrentPhase() == PHASE_END 00064 ), 00065 "AddEvent() can be called only in PHASE_PROCESS/END." 00066 ); 00067 ASSERT( time >= 0, "time is negative." ); 00068 ASSERT( m_size > time, "event list is not enough." ); 00069 00070 if( /*m_processedThisCycle &&*/ time == 0 ){ 00071 evnt->TriggerUpdate(); 00072 return; 00073 } 00074 00075 //ASSERT( !(time == 0 && m_processedThisCycle == true) , "event added after process."); 00076 00077 int id = IndexAfterTime( time ); 00078 m_eventWheel.GetEventList( id )->AddEvent( evnt ); 00079 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
const ListType& Onikiri::TimeWheelBase::CurrentEvents | ( | ) | [inline] |
TimeWheelBase.h の 90 行で定義されています。
参照先 Onikiri::EventWheel::GetEventList()・m_eventWheel.
00091 { 00092 return *m_eventWheel.GetEventList( m_current ); 00093 }
関数の呼び出しグラフ:
void TimeWheelBase::End | ( | ) | [virtual] |
Onikiri::ClockedResourceBaseを再定義しています。
TimeWheelBase.cpp の 106 行で定義されています。
参照先 Onikiri::EventList::Clear()・Onikiri::ClockedResourceBase::End()・Onikiri::ClockedResourceBase::IsStalledThisCycle()・m_eventWheel・Onikiri::EventWheel::PeekEventList()・Onikiri::EventWheel::ReleaseEventList().
00107 { 00108 if( !IsStalledThisCycle() ){ 00109 // Clear events 00110 int current = m_current; 00111 ListType* curEvent = m_eventWheel.PeekEventList(current); 00112 if( curEvent ){ 00113 curEvent->Clear(); 00114 m_eventWheel.ReleaseEventList( curEvent, current ); 00115 } 00116 } 00117 00118 ClockedResourceBase::End(); 00119 }
関数の呼び出しグラフ:
const ListType& Onikiri::TimeWheelBase::EventsAfterTime | ( | int | time | ) | [inline] |
TimeWheelBase.h の 85 行で定義されています。
参照先 Onikiri::EventWheel::GetEventList()・IndexAfterTime()・m_eventWheel.
00086 { 00087 return *m_eventWheel.GetEventList( IndexAfterTime(time) ); 00088 }
関数の呼び出しグラフ:
s64 TimeWheelBase::GetNow | ( | ) | const |
TimeWheelBase.cpp の 94 行で定義されています。
参照先 ASSERT・Onikiri::ClockedResourceBase::GetCurrentPhase()・Onikiri::ClockedResourceBase::PHASE_END・Onikiri::ClockedResourceBase::PHASE_UPDATE.
参照元 Onikiri::CacheMissedAccessList::Add()・Onikiri::CacheMissedAccessList::Find()・Onikiri::CacheAccessRequestQueue::GetNextAccessStartableTime()・Onikiri::CacheAccessRequestQueue::Push().
00095 { 00096 ASSERT( 00097 ( GetCurrentPhase() == PHASE_UPDATE || 00098 GetCurrentPhase() == PHASE_END 00099 ), 00100 "GetNow() can be called only in PHASE_PROCESS/END." 00101 ); 00102 return m_now; 00103 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
int Onikiri::TimeWheelBase::GetWheelSize | ( | ) | const [inline] |
int Onikiri::TimeWheelBase::IndexAfterTime | ( | int | time | ) | [inline, protected] |
TimeWheelBase.h の 100 行で定義されています。
参照元 AddEvent()・EventsAfterTime().
00101 { 00102 int index = m_current + time; 00103 while( index >= m_size ){ 00104 index -= m_size; 00105 } 00106 return index; 00107 }
Here is the caller graph for this function:
Onikiri::TimeWheelBase::PARAM_ENTRY | ( | "@Size" | , | |
m_size | ||||
) |
void TimeWheelBase::Tick | ( | ) | [virtual] |
Onikiri::ClockedResourceBaseを再定義しています。
TimeWheelBase.cpp の 83 行で定義されています。
00084 { 00085 m_current++; 00086 if(m_current >= m_size){ 00087 m_current -= m_size; 00088 } 00089 ++m_now; 00090 }
EventWheel Onikiri::TimeWheelBase::m_eventWheel [protected] |
TimeWheelBase.h の 98 行で定義されています。
参照元 AddEvent()・CurrentEvents()・End()・EventsAfterTime()・TimeWheelBase().