クラス Onikiri::TimeWheelBase

#include <TimeWheelBase.h>

Onikiri::TimeWheelBaseに対する継承グラフ

Inheritance graph
[凡例]
Onikiri::TimeWheelBaseのコラボレーション図

Collaboration graph
[凡例]
すべてのメンバ一覧

Public 型

typedef EventPtr ListNode
typedef EventList ListType

Public メソッド

virtual void AddEvent (const ListNode &evnt, int time)
const ListTypeCurrentEvents ()
virtual void End ()
const ListTypeEventsAfterTime (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.h48 行で定義されています。


型定義

typedef EventPtr Onikiri::TimeWheelBase::ListNode

TimeWheelBase.h53 行で定義されています。

typedef EventList Onikiri::TimeWheelBase::ListType

TimeWheelBase.h54 行で定義されています。


コンストラクタとデストラクタ

TimeWheelBase::TimeWheelBase (  ) 

TimeWheelBase.cpp45 行で定義されています。

参照先 Onikiri::ParamExchange::LoadParam()m_eventWheelOnikiri::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.cpp54 行で定義されています。

参照先 Onikiri::ParamExchange::ReleaseParam().

00055 {
00056     ReleaseParam();
00057 }

関数の呼び出しグラフ:


関数

void TimeWheelBase::AddEvent ( const ListNode evnt,
int  time 
) [virtual]

TimeWheelBase.cpp59 行で定義されています。

参照先 Onikiri::EventList::AddEvent()ASSERTOnikiri::ClockedResourceBase::GetCurrentPhase()Onikiri::EventWheel::GetEventList()IndexAfterTime()m_eventWheelOnikiri::ClockedResourceBase::PHASE_ENDOnikiri::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.h90 行で定義されています。

参照先 Onikiri::EventWheel::GetEventList()m_eventWheel.

00091         {
00092             return *m_eventWheel.GetEventList( m_current );
00093         }

関数の呼び出しグラフ:

void TimeWheelBase::End (  )  [virtual]

Onikiri::ClockedResourceBaseを再定義しています。

TimeWheelBase.cpp106 行で定義されています。

参照先 Onikiri::EventList::Clear()Onikiri::ClockedResourceBase::End()Onikiri::ClockedResourceBase::IsStalledThisCycle()m_eventWheelOnikiri::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.h85 行で定義されています。

参照先 Onikiri::EventWheel::GetEventList()IndexAfterTime()m_eventWheel.

00086         {
00087             return *m_eventWheel.GetEventList( IndexAfterTime(time) ); 
00088         }

関数の呼び出しグラフ:

s64 TimeWheelBase::GetNow (  )  const

TimeWheelBase.cpp94 行で定義されています。

参照先 ASSERTOnikiri::ClockedResourceBase::GetCurrentPhase()Onikiri::ClockedResourceBase::PHASE_ENDOnikiri::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]

TimeWheelBase.h80 行で定義されています。

00081         {
00082             return m_size;
00083         }

int Onikiri::TimeWheelBase::IndexAfterTime ( int  time  )  [inline, protected]

TimeWheelBase.h100 行で定義されています。

参照元 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.cpp83 行で定義されています。

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.h98 行で定義されています。

参照元 AddEvent()CurrentEvents()End()EventsAfterTime()TimeWheelBase().


このクラスの説明は次のファイルから生成されました:
Onikiri2に対してTue Jun 18 15:23:58 2013に生成されました。  doxygen 1.4.7