TNB Library
クラス | 公開メンバ関数 | 全メンバ一覧
CQueueingReporter クラス

キューイングレポートクラス [詳解]

#include <TnbQueueingReporter.h>

+ CQueueingReporter の継承関係図

クラス

struct  IListener
 キューイングレポートのリスナーインターフェース [詳解]
 

公開メンバ関数

 CQueueingReporter (int iQueueSize=10000)
 コンストラクタ [詳解]
 
size_t GetQueueFreeSize (void) const
 [取得] キュー空きサイズ取得. [詳解]
 
bool IsAlive (void) const
 [確認] Aliveチェック. [詳解]
 
bool IsConnect (void) const
 [確認] 接続チェック [詳解]
 
void Purge (void)
 [消去] キューバッファクリア. [詳解]
 
IReportReferReport (void)
 [取得] レポータ取得 [詳解]
 
const IReportReferReport (void) const
 [取得] レポータ取得 [詳解]
 
void ResetEnvironment (void)
 [設定] 環境リセット [詳解]
 
bool Send (size_t dataSize, LPCVOID lpcData)
 [送信] データ送信. [詳解]
 
void SetAliveTime (DWORD time=DWORD_MAX)
 [設定] キュー有効時間設定. [詳解]
 
void SetEnvironment (IReport *pReport, IListener *pListener)
 [設定] 環境設定 [詳解]
 
void SetTearminalTime (DWORD time=DWORD_MAX)
 [設定] 終端時間設定. [詳解]
 
 ~CQueueingReporter (void)
 デストラクタ [詳解]
 

詳解

キューイングレポートクラス

IReport から読みだしたデータをキューイングしています。そのデータを IListener で取得することが可能です。
キューイングしているデータのため、解析が容易になります。
覚え書き
出力はキューイングサポートしません。
使用例

    class CFoo : private CQueueingReporter::IListener
    {
    public:
        /// オープン.
        bool Open(IReport* pReport)
        {
            m_queue.SetAliveTime(100); //100ms 経ってもパケットがそろわないのは破棄
            m_queue.SetEnvironment(pReport, this);
                ;
        }

    private:
        virtual bool OnReportEvent(const CReportEvent& ev)
        {
            ASSERT( ! ev.HasData() );
            ev.GetEvent();
            return true;
        }

        virtual size_t OnReportData(bool boIsLast, const IConstCollectionT<BYTE>& c)
        {
            // (c を解析)
            if ( r == 0 )
            {
                return 0; // 解析するにはデータが足りない
            }
            if ( r < 0 )
            {
                return 1; // ヘッダ情報がおかしいので 1byte 捨てる
            }
            // (パケット確認)
            return r; // 解析したパケット数を返す
        }
    };

 

必要ファイル
TnbQueueingReporter.h
日付
08/09/09 新規作成
09/02/19 IsAlive(), IsConnect(), Send() を追加。
09/03/25 Purge() を追加。
09/03/31 CQueueingReporter に改名。
09/04/09 キューの有効時間を設定可能に。
11/07/14 SetAliveTime() の時間の意味を変更
11/09/20 IListener::OnReportDustyData() 追加。
15/02/20 SetTearminalTime() を新規。時間で終端を決めるモードを追加。

TnbQueueingReporter.h84 行目に定義があります。

構築子と解体子

◆ CQueueingReporter()

CQueueingReporter ( int  iQueueSize = 10000)
explicit

コンストラクタ

引数
iQueueSize受信Byteキューのサイズ。省略すると10000です。

TnbQueueingReporter.h134 行目に定義があります。

◆ ~CQueueingReporter()

~CQueueingReporter ( void  )

デストラクタ

TnbQueueingReporter.h139 行目に定義があります。

関数詳解

◆ GetQueueFreeSize()

size_t GetQueueFreeSize ( void  ) const

[取得] キュー空きサイズ取得.

戻り値
空きサイズ

TnbQueueingReporter.h257 行目に定義があります。

◆ IsAlive()

bool IsAlive ( void  ) const

[確認] Aliveチェック.

各サブクラスの開始メソッドが実行されている状態か、チェックします。

戻り値
true開始している。
false停止している。

TnbQueueingReporter.h204 行目に定義があります。

◆ IsConnect()

bool IsConnect ( void  ) const

[確認] 接続チェック

戻り値
true接続中。
false切断。

TnbQueueingReporter.h218 行目に定義があります。

◆ Purge()

void Purge ( void  )

[消去] キューバッファクリア.

覚え書き
キューにたまっているデータをクリアします。

TnbQueueingReporter.h248 行目に定義があります。

◆ ReferReport() [1/2]

IReport * ReferReport ( void  )

[取得] レポータ取得

戻り値
レポータ

TnbQueueingReporter.h266 行目に定義があります。

◆ ReferReport() [2/2]

const IReport * ReferReport ( void  ) const

[取得] レポータ取得

戻り値
レポータ

TnbQueueingReporter.h275 行目に定義があります。

◆ ResetEnvironment()

void ResetEnvironment ( void  )

[設定] 環境リセット

TnbQueueingReporter.h163 行目に定義があります。

◆ Send()

bool Send ( size_t  dataSize,
LPCVOID  lpcData 
)

[送信] データ送信.

覚え書き
単にレポータに送信依頼するだけです。
引数
dataSize送信するデータ長。
lpcData送信するデータ。
戻り値
true成功
false失敗

TnbQueueingReporter.h235 行目に定義があります。

◆ SetAliveTime()

void SetAliveTime ( DWORD  time = DWORD_MAX)

[設定] キュー有効時間設定.

キュー格納後、一定時間受信がない場合、キュー内容を破棄することが出来ます。

覚え書き
SetTerminalTime() と同時に指定できません。
引数
timeキューの有効時間(ms)。最後に受信して解析してから指定時間経過したら、キューの先頭の一バイトを破棄して、 再度解析をします。省略時は無効( DWORD_MAX )です。

TnbQueueingReporter.h180 行目に定義があります。

◆ SetEnvironment()

void SetEnvironment ( IReport pReport,
IListener pListener 
)

[設定] 環境設定

覚え書き
本クラスのインスタンスとレポーターのインスタンスを同じスコープにおく場合、 レポーターのほうを上に宣言しておくこと(先に構築され、後に破棄されるため)。
引数
pReportレポート。
pListenerリスナー。

TnbQueueingReporter.h151 行目に定義があります。

◆ SetTearminalTime()

void SetTearminalTime ( DWORD  time = DWORD_MAX)

[設定] 終端時間設定.

キュー格納後、一定時間受信がない場合にキュー内容を解析するようにします。

覚え書き
SetAliveTime() と同時に指定できません。
引数
time終端時間(ms)。

TnbQueueingReporter.h192 行目に定義があります。