TNB Library
TnbReport.h
[詳解]
1#pragma once
13#include "TnbStr.h"
14
15
16
17//TNB Library
18namespace TNB
19{
20
21
22
28{
36
43};
44
50
51
52
70{
71 const BYTE* m_lpcbData;
72 size_t m_dataSize;
73 EReportEvent m_eEvent;
74 DWORD m_dwErrorCode;
75 friend struct IReport;
76
77protected:
78
80
81public:
82
89 explicit
90 CReportEvent(IReport* piComm, EReportEvent eEvent = ReportEvent_Non, DWORD dwError = 0)
91 {
92 m_lpcbData = NULL;
93 m_dataSize = 0;
94 m_eEvent = eEvent;
95 m_dwErrorCode = dwError;
96 m_piReport = piComm;
97 }
98
104 virtual DWORD GetInterfaceId(void) const; //本体はファイル下位に記述
105
113 virtual bool Send(size_t dataSize, LPCVOID lpcvData) const; //本体はファイル下位に記述
114
120 bool HasData(void) const
121 {
122 return m_lpcbData != NULL;
123 }
124
130 bool HasEvent(void) const
131 {
132 return ! HasData();
133 }
134
139 size_t GetDataSize(void) const
140 {
141 return HasData() ? m_dataSize : 0;
142 }
143
148 const BYTE* GetData(void) const
149 {
150 return m_lpcbData;
151 }
152
158 {
159 return HasEvent() ? m_eEvent : ReportEvent_Non;
160 }
161
166 DWORD GetErrorCode(void) const
167 {
168 if ( HasEvent() && GetEvent() == ReportEvent_Error )
169 {
170 return m_dwErrorCode;
171 }
172 return 0;
173 }
174
180 {
181 switch ( GetEvent() )
182 {
183 case ReportEvent_Non: return _T("なし");
184 case ReportEvent_Idle: return _T("アイドル");
185 case ReportEvent_End: return _T("終了");
186 case ReportEvent_IrregularEnd: return _T("強制終了");
187 case ReportEvent_Connect: return _T("接続");
188 case ReportEvent_Disconnect: return _T("切断");
189 case ReportEvent_Error: return CStr::Fmt(_T("エラー[%u]"), GetErrorCode());
190 }
191 return _T("");
192 }
193
200 void SetData(size_t dataSize, LPCVOID lpcData)
201 {
202 m_dataSize = dataSize;
203 m_lpcbData = static_cast<const BYTE*>(lpcData);
204 }
205};
206
207
208
227{
228 friend class CReportEvent;
229
243 {
245 virtual ~IListener(void) {}
246
281 virtual bool OnReportEvent(const CReportEvent& ev) = 0;
282 };
283
284
285 //------------------------------
286
287
289 virtual ~IReport(void)
290 {
291 }
292
298 virtual CStr GetReportName(void) const = 0;
299
306 virtual DWORD GetReportID(void) const = 0;
307
313 virtual void SetListener(IReport::IListener* piCommListener = NULL) = 0;
314
319 virtual DWORD GetInterfaceId(void) const = 0;
320
328 virtual void SetIdleEventMode(int iInterval = 0) = 0;
329
336 virtual bool Start(void) = 0;
337
342 virtual void Stop(void) = 0;
343
350 virtual bool IsAlive(void) const = 0;
351
357 virtual bool IsConnect(void) const = 0;
358
366 virtual bool Send(size_t dataSize, LPCVOID lpcData) = 0;
367
372 virtual void Purge(void) = 0;
373};
374
375
376
378inline bool CReportEvent::Send(size_t dataSize, LPCVOID lpcvData) const
379{
380 return m_piReport->Send(dataSize, lpcvData);
381}
382
384inline DWORD CReportEvent::GetInterfaceId(void) const
385{
386 return m_piReport->GetInterfaceId();
387}
388
389
390
391}; // TNB
文字列管理関係のヘッダ
通信受信イベント管理クラス
Definition: TnbReport.h:70
DWORD GetErrorCode(void) const
[取得] エラーコード取得
Definition: TnbReport.h:166
CStr GetEventString(void) const
[取得] イベントコード文字列取得
Definition: TnbReport.h:179
virtual DWORD GetInterfaceId(void) const
[取得] インターフェースID取得
Definition: TnbReport.h:384
size_t GetDataSize(void) const
[取得] データ長取得
Definition: TnbReport.h:139
bool HasEvent(void) const
[確認] Event(Error)を持っている
Definition: TnbReport.h:130
void SetData(size_t dataSize, LPCVOID lpcData)
[設定] データ設定.
Definition: TnbReport.h:200
virtual bool Send(size_t dataSize, LPCVOID lpcvData) const
[送信] データ送信
Definition: TnbReport.h:378
const BYTE * GetData(void) const
[取得] データアドレス取得
Definition: TnbReport.h:148
EReportEvent GetEvent(void) const
[取得] イベントコード取得
Definition: TnbReport.h:157
IReport * m_piReport
Report Objectの参照
Definition: TnbReport.h:79
bool HasData(void) const
[確認] Dataを持っているか
Definition: TnbReport.h:120
CReportEvent(IReport *piComm, EReportEvent eEvent=ReportEvent_Non, DWORD dwError=0)
コンストラクタ
Definition: TnbReport.h:90
static CStrT Fmt(const TCHAR *lpszFormat,...)
[作成] 書式付き文字列作成
Definition: TnbStr.h:1206
TNB Library
Definition: TnbDoxyTitle.txt:2
EReportEvent EReportEventId
通信受信イベント種.
Definition: TnbReport.h:49
EReportEvent
通信受信イベント種.
Definition: TnbReport.h:28
@ ECE_Disconnect
切断(旧シンボル)
Definition: TnbReport.h:42
@ ECE_Connect
接続(旧シンボル)
Definition: TnbReport.h:41
@ ReportEvent_End
終了.
Definition: TnbReport.h:31
@ ReportEvent_Error
エラー.
Definition: TnbReport.h:32
@ ReportEvent_Non
イベントなし.
Definition: TnbReport.h:29
@ ReportEvent_IrregularEnd
不正終了.
Definition: TnbReport.h:35
@ ReportEvent_Connect
接続.
Definition: TnbReport.h:33
@ ReportEvent_Disconnect
切断.
Definition: TnbReport.h:34
@ ECE_Error
エラー(旧シンボル)
Definition: TnbReport.h:40
@ ReportEvent_Idle
アイドル.
Definition: TnbReport.h:30
@ ECE_Idle
アイドル(旧シンボル)
Definition: TnbReport.h:38
@ ECE_End
終了(旧シンボル)
Definition: TnbReport.h:39
@ ECE_Non
イベントなし(旧シンボル)
Definition: TnbReport.h:37
通信のリスナーインターフェース
Definition: TnbReport.h:243
virtual ~IListener(void)
デストラクタ
Definition: TnbReport.h:245
virtual bool OnReportEvent(const CReportEvent &ev)=0
[通知] イベント発生.
通信アクセスインターフェース
Definition: TnbReport.h:227
virtual DWORD GetInterfaceId(void) const =0
[取得] インターフェースID取得
virtual bool Send(size_t dataSize, LPCVOID lpcData)=0
[送信] データ送信
virtual bool IsAlive(void) const =0
[確認] Aliveチェック.
virtual bool Start(void)=0
[操作] 開始.
virtual void Stop(void)=0
[操作] 停止.
virtual CStr GetReportName(void) const =0
[取得] コミュニケーション名.
virtual void SetListener(IReport::IListener *piCommListener=NULL)=0
[登録] 共通Listner登録.
virtual ~IReport(void)
デストラクタ
Definition: TnbReport.h:289
virtual void SetIdleEventMode(int iInterval=0)=0
[設定] アイドルイベント設定
virtual bool IsConnect(void) const =0
[確認] 接続チェック
virtual DWORD GetReportID(void) const =0
[取得] コミュニケーションID.
virtual void Purge(void)=0
[設定] パージ.