CTR-Pia
5.4.3
Game Communication Engine
メインページ
ネームスペース一覧
クラス構成
クラス索引
関連ページ
Result 検索
全て
クラス
ネームスペース
関数
変数
型定義
列挙型
列挙型の値
ページ
transport_TransportAnalyzer.h
1
/*--------------------------------------------------------------------------------*
2
Copyright (C)Nintendo All rights reserved.
3
4
These coded instructions, statements, and computer programs contain proprietary
5
information of Nintendo and/or its licensed developers and are protected by
6
national and international copyright laws. They may not be disclosed to third
7
parties or copied or duplicated in any form, in whole or in part, without the
8
prior written consent of Nintendo.
9
10
The content herein is highly confidential and should be handled accordingly.
11
*--------------------------------------------------------------------------------*/
12
13
14
#pragma once
15
16
#include <nn/pia/transport/transport_Definitions.h>
17
18
#include <nn/pia/transport/transport_TransportAnalysisData.h>
19
#include <nn/pia/common/common_Time.h>
20
21
22
namespace
nn
23
{
24
namespace
pia
25
{
26
namespace
transport
27
{
28
29
30
// 先行宣言
31
class
ConnectionAnalyzer;
32
33
/*!
34
@brief TransportAnalyzer クラスは、パケット解析結果や RTT 、パケロス率などを
35
報告するために用意されたクラスです。
36
37
*/
38
class
TransportAnalyzer
:
public
common::RootObject
39
{
40
public
:
41
/*!
42
@brief トランスポート分析データのプリントコールバック型です。
43
@details トランスポート分析データの出力文字列を独自定義の関数に渡したい場合に使用します。
44
45
@param[in] pStr トランスポート分析データのテキスト文字列が渡されます。改行文字は含まれません。
46
*/
47
typedef
void (*
AnalysisPrintCallback
)(
const
char
* pStr);
48
49
50
/*!
51
@cond PRIVATE
52
@brief TransportAnalyzer クラスのインスタンスを作成します(シングルトンパターン)。
53
54
@return インスタンスの作成に成功すれば、成功の Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
55
@retval ResultNotInitialized transport モジュールが未初期化です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
56
@retval ResultInvalidState CreateInstance() を呼ぶタイミングが誤っています。 BeginSetup() ~ EndSetup() 間で呼び出す必要があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
57
@retval ResultAlreadyExists 既にインスタンスは作成されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
58
@retval ResultAllocationFailed 内部でメモリ確保に失敗しました。 common::Initialize() で Pia に供給するメモリを増やす必要があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
59
@see DestroyInstance, GetInstance, Setting
60
@endcond
61
*/
62
static
Result
CreateInstance();
63
64
65
/*!
66
@cond PRIVATE
67
@brief TransportAnalyzer クラスのインスタンスを破棄します(シングルトンパターン)。
68
インスタンスが存在していなかった場合は、何もしません。
69
70
@see CreateInstance, GetInstance
71
@endcond
72
*/
73
static
void
DestroyInstance();
74
75
76
/*!
77
@brief TransportAnalyzer クラスのインスタンスを得ます(シングルトンパターン)。
78
事前に CreateInstance() によってインスタンスを作成していない場合は、
79
NULL ポインタが返されます。
80
この関数はスレッドセーフです。
81
82
@return TransportAnalyzer インスタンスへのポインタ。
83
@see CreateInstance, DestroyInstance
84
*/
85
static
TransportAnalyzer
*
GetInstance
()
86
{
87
return
s_pInstance;
88
}
89
90
/*!
91
@cond PRIVATE
92
@brief 初期化処理を実行します。
93
94
@return 初期化処理が成功すれば、IsSuccess() が true となる Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
95
@retval ResultAlreadyInitialized 既に Initialize() は実行されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
96
@retval ResultAllocationFailed 内部でメモリ確保に失敗しました。 common::Initialize() で Pia に供給するメモリを増やす必要があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
97
@endcond
98
*/
99
Result
Initialize();
100
101
102
/*!
103
@cond PRIVATE
104
@brief 終了処理を実行します。
105
@endcond
106
*/
107
void
Finalize();
108
109
110
/*!
111
@cond PRIVATE
112
@brief 解析を開始します。
113
114
@return 処理が成功すれば、IsSuccess() が true となる Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
115
@retval ResultNotInitialized TransportAnalyzer インスタンスが未初期化です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
116
@retval ResultInvalidState この関数を呼び出すタイミングが誤っています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
117
@endcond
118
*/
119
Result
Startup();
120
121
122
/*!
123
@cond PRIVATE
124
@brief 解析を終了します。
125
@endcond
126
*/
127
void
Cleanup();
128
129
130
/*!
131
@brief データを更新します。
132
133
@details Transport::Setting 構造体の analysisInterval メンバ変数に正の値をセットして、
134
分析データの自動プリントを有効にした状態であれば、アプリケーションはこの API を
135
呼び出す必要はありません。
136
analysisInterval メンバ変数に 0 の値をセットし、自動プリント機能を無効にした
137
状態でアプリケーションが分析データを取得する際は、明示的にこの API を呼びだし、
138
データの更新を行う必要があります。
139
140
@return 処理が成功すれば、IsSuccess() が true となる Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
141
@retval ResultNotInitialized TransportAnalyzer インスタンスが未初期化です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
142
@retval ResultInvalidState この関数を呼び出すタイミングが誤っています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
143
*/
144
Result
Update
();
145
146
147
/*!
148
@brief データを取得します。
149
*/
150
const
struct
TransportAnalysisData
&
GetTransportAnalysisData
()
const
151
{
152
return
m_Data;
153
}
154
155
156
/*!
157
@brief グラフに区切りをいれるための文字列をコンソールに出力します。
158
159
@param[in] pComment 区切り線に付ける名前の文字列を指すポインタ。文字列に空白類文字を含めることはできません。また、NULL を指定することもできません。
160
161
@retval ResultInvalidArgument 引数が誤っています。NULL ポインタや、空白類文字を含む文字列を与えることはできません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
162
@retval ResultInvalidState この関数を呼び出すタイミングが誤っています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
163
*/
164
Result
SetMarker
(
const
char
* pComment);
165
166
/*!
167
@brief プリントコールバックを登録します。
168
169
@param[in] pCallback 登録するコールバック関数ポインタ。
170
171
@return この関数を呼び出す前に登録されていたプリントコールバックが返されます。
172
*/
173
AnalysisPrintCallback
RegisterPrintCallback
(
AnalysisPrintCallback
pCallback);
174
175
176
// コンストラクタです。
177
TransportAnalyzer
();
178
179
180
// デストラクタです。
181
~
TransportAnalyzer
();
182
183
184
/*!
185
@cond PRIVATE
186
@brief モニタリングデータを書き込みます。
187
@endcond
188
*/
189
void
SetMonitoringData();
190
191
192
/*!
193
@brief デバッグに有用な情報をプリントします。
194
195
@param[in] flag トレースフラグの論理和。詳細は @ref TraceFlag 型を参照してください。
196
*/
197
void
Trace
(uint64_t flag)
const
;
198
199
private
:
200
ConnectionAnalyzer* m_pConnectionAnalyzer;
201
bool
m_IsStartup;
202
struct
TransportAnalysisData
m_Data;
203
204
common::Time
m_StartupTime;
// Startup() が呼ばれた時刻。
205
206
static
TransportAnalyzer
* s_pInstance;
207
};
208
}
209
}
210
}
// end of namespace nn::pia::transport
Include
nn
pia
transport
transport_TransportAnalyzer.h
© 2016 Nintendo Co., Ltd. All rights reserved. 記載されている会社名、製品名等は、各社の登録商標または商標です。