CTR-Pia
5.4.3
Game Communication Engine
|
ステーションを表現するクラスです。ステーションとは、 Pia のセッションに参加しているマシンを指す言葉です。 [詳細]
構成 | |
struct | IdentificationToken |
Station と結び付けて保存される識別トークン構造体です。 [詳細] | |
struct | PlayerId |
Station に結び付けて保存されるプレイヤー ID の構造体です。 [詳細] | |
struct | PlayerInfo |
Station に結び付けて保存されるプレイヤー情報の構造体です。 [詳細] | |
Public 型 | |
enum | StationState { StationState_Invalid, StationState_Initial, StationState_CreatingSession, StationState_JoiningSession, StationState_WaitingConnection, StationState_Participating, StationState_Leaving, StationState_Max = StationState_Leaving } |
Station の状態を示す列挙型です。 [詳細] | |
Public メソッド | |
Result | GetIdentificationToken (IdentificationToken *pToken) |
Station の識別トークンを取得します。 | |
Result | GetParticipantCount (uint8_t *pParticipantCount) |
Station のマッチメイク参加者数を取得します。 | |
Result | GetPlayerCount (uint8_t *pPlayerCount) |
Station のプレイヤー数を取得します。 | |
Result | GetPlayerInfo (uint8_t index, PlayerInfo *pInfo) |
Station と結びつけられているプレイヤー情報を取得します。 | |
Result | GetPrincipalId (PrincipalId *pPrincipalId) |
Station のプリンシパル ID を取得します。 | |
int32_t | GetRtt (void) const |
ローカル Station と、この Station 間の RTT (Round Trip Time) を取得します。 | |
int32_t | GetRtt (uint32_t samplingNum) const |
ローカル Station と、この Station 間の RTT を取得します。 RTT 算出に使用するサンプリング数を指定できます。 | |
int32_t | GetRttSamplingNum (void) const |
システムが保持する RTT (Round Trip Time) サンプリング値の個数を取得します。 | |
SequenceIdController * | GetSequenceIdController (void) |
SequenceIdController のポインタを得ます(非 const 版)。 この関数はスレッドセーフです。 | |
const SequenceIdController * | GetSequenceIdController (void) const |
SequenceIdController のポインタを得ます( const 版)。 この関数はスレッドセーフです。 | |
StationState | GetState (void) const |
Station の状態を得ます。 | |
const common::StationAddress & | GetStationAddress (void) const |
ステーションアドレスを取得します。 | |
StationId | GetStationId (void) const |
StationId を取得します。 | |
StationIndex | GetStationIndex (void) const |
StationIndex を取得します。 | |
virtual void | Trace (uint64_t flag) const |
デバッグに有用な情報をプリントします。 | |
Static Public メソッド | |
static int32_t | GetInitialRttPulseInterval (void) |
RTT 算出のための初期パルス送信間隔を取得します。 | |
static int32_t | GetRttPulseInterval (void) |
RTT 算出のためのパルス送信間隔を取得します。 | |
static Result | SetInitialRttPulseInterval (int32_t msec) |
RTT 算出のための初期パルス送信間隔を設定します。 | |
static Result | SetRttPulseInterval (int32_t msec) |
RTT 算出のためのパルス送信間隔を設定します。 | |
Static Public 変数 | |
static const uint32_t | IdentificationTokenMaxDataSize = 32 |
識別トークンの最大データサイズです。 | |
static const int32_t | InvalidRtt = -1 |
GetRtt() が返しうる、無効な値です。 | |
ステーションを表現するクラスです。ステーションとは、 Pia のセッションに参加しているマシンを指す言葉です。
Station の状態を示す列挙型です。
Result nn::pia::transport::Station::GetIdentificationToken | ( | IdentificationToken * | pToken | ) |
Station の識別トークンを取得します。
ローカル Station の場合は session::Session::Startup で設定した識別トークンを取得します。 ローカル Station 以外の Station の場合は接続時に共有している識別トークンを取得します。 設定していない場合、この API の処理には成功しますが、取得した識別トークンのデータは全て NULL となります。
識別トークンの取得に失敗した場合、格納先として指定された識別トークンの内部値を変更することはありません。
[out] | pToken | Station の識別トークンが取得できた場合、pToken に格納されます。 |
ResultInvalidState 関数が実行可能な状態ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
ResultInvalidArgument 引数で指定されたポインタが有効ではない場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
ResultNoData 指定された Station の識別トークンが取得できなかった場合に返ります。識別トークンの共有が完了していない可能性があります。アプリケーションで適切にハンドリングしてください。
|
static |
RTT 算出のための初期パルス送信間隔を取得します。
RTT 算出のパルス送出は、Station がセッションに参加してから開始されます。 そのため、セッション参加直後の段階では、RTT 算出のためのサンプリング値の個数が 十分ではありません。 そこでシステムは、サンプリング値が十分な個数になるまでは、通常よりも短い間隔で パルス送出を試み、早期にサンプリング値の個数を満足させるように動作します。 本 API は、この初期期間におけるパルス送出間隔を取得します。
Result nn::pia::transport::Station::GetPlayerInfo | ( | uint8_t | index, |
PlayerInfo * | pInfo | ||
) |
Station と結びつけられているプレイヤー情報を取得します。
ローカル Station の場合は session::Session::Startup で設定したプレイヤー情報を取得します。 ローカル Station 以外の Station の場合は接続時に共有しているプレイヤー情報を取得します。 ただし、取得したプレイヤー情報のプレイヤー ID の値は不定のため、使用してはいけません。<br >
プレイヤー情報の取得に失敗した場合、格納先として指定された変数の内部値を変更することはありません。
[in] | index | Station と結び付けられているプレイヤー情報リストから情報を取得したいプレイヤーのインデックス |
[out] | pInfo | 取得するプレイヤー情報のコピー先 |
ResultInvalidState 関数が実行可能な状態ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
ResultInvalidArgument 引数で指定されたインデックスやポインタが有効ではない場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
ResultNoData 指定された Station の情報が取得できなかった場合に返ります。情報の共有が完了していない可能性があります。アプリケーションで適切にハンドリングしてください。
Result nn::pia::transport::Station::GetPrincipalId | ( | PrincipalId * | pPrincipalId | ) |
Station のプリンシパル ID を取得します。
プリンシパル ID はセッション参加後に取得できます。 プリンシパル ID の取得に失敗した場合、格納先として指定されたプリンシパル ID の内部値を変更することはありません。
本 API で取得するプリンシパル ID はネットワーク種別によって以下のように設定されます。
[out] | pPrincipalId | Station のプリンシパル ID が取得できた場合、pPrincipalId に格納されます。 |
ResultInvalidState 関数が実行可能な状態ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
ResultInvalidArgument 引数で指定されたポインタが有効ではない場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
ResultNoData 指定された Station のプリンシパル ID が取得できなかった場合に返ります。ステーション情報の共有が完了していない可能性があります。アプリケーションで適切にハンドリングしてください。
int32_t nn::pia::transport::Station::GetRtt | ( | void | ) | const |
ローカル Station と、この Station 間の RTT (Round Trip Time) を取得します。
システムは RTT を取得する目的で、定期的に他 Station に向けてパルスを発信しています。 しかし Station がセッションに接続した直後などでは、パルス発信/応答の処理がまだ 一度も行われていないタイミングも存在します。 このとき GetRtt() は InvalidRtt を返しますが、しばらく時間が経過してから GetRtt() を 呼び出せば、正しい値が返されるようになります。 本 API は、過去に計測した複数のサンプリング値から得られる中央値を返します。 そのため、本 API で得られる値はネットワーク環境の微細な変動による影響を受けにくく、 ある程度安定した値が返されます。
int32_t nn::pia::transport::Station::GetRtt | ( | uint32_t | samplingNum | ) | const |
ローカル Station と、この Station 間の RTT を取得します。 RTT 算出に使用するサンプリング数を指定できます。
システムは RTT パルス発信/応答によって得られたサンプリング値を複数個保持しています。 引数指定なしの GetRtt() では、保持されている全てのサンプリング値を用いて中央値を返しますが、 この引数指定ありの GetRtt() は、指定された個数だけのサンプリング値を用いて中央値を返します。 このとき、若い側のサンプリング値が使用されるので、小さな値を指定すると、最近のネットワーク環境を 強く反映した RTT 値が得られます。 その一方で、あまりに小さな値を設定すると、 RTT 値は変動しやすくなります。
[in] | samplingNum | RTT の算出に際して、直近のサンプリング値をいくつ使用するかを指定します。 |
|
static |
RTT 算出のためのパルス送信間隔を取得します。
int32_t nn::pia::transport::Station::GetRttSamplingNum | ( | void | ) | const |
システムが保持する RTT (Round Trip Time) サンプリング値の個数を取得します。
システムは RTT を取得する目的で、定期的に他 Station に向けてパルスを発信し、 その応答に要した時間を RTT サンプリング値として保存します。 しかし Station がセッションに接続した直後など、パルス発信/応答の処理が 開始されたばかりのために、十分な数のサンプリング値が得られていない期間も存在します。 本 API は、GetRtt() などが返す RTT 値の算出に用いられているサンプリング値の 個数を返しますので、その RTT 値の信頼性/精度を知ることができます。
|
inline |
SequenceIdController のポインタを得ます(非 const 版)。 この関数はスレッドセーフです。
|
inline |
SequenceIdController のポインタを得ます( const 版)。 この関数はスレッドセーフです。
|
inline |
|
inline |
ステーションアドレスを取得します。
|
inline |
StationId を取得します。
|
inline |
StationIndex を取得します。
この関数はスレッドセーフです。
アプリケーションがジョイントセッション機能を使用する場合は、この関数を呼び出してはいけません。 動作保証外となります。
|
static |
RTT 算出のための初期パルス送信間隔を設定します。
RTT 算出のパルス送出は、Station がセッションに参加してから開始されます。 そのため、セッション参加直後の段階では、RTT 算出のためのサンプリング値の個数が 十分ではありません。 そこでシステムは、サンプリング値が十分な個数になるまでは、通常よりも短い間隔で パルス送出を試み、早期にサンプリング値の個数を満足させるように動作します。 本 API は、この初期期間におけるパルス送出間隔を設定します。
[in] | msec | 初期パルス送信間隔。単位はミリ秒です。 |
|
static |
RTT 算出のためのパルス送信間隔を設定します。
[in] | msec | パルス送信間隔。単位はミリ秒です。 |
|
virtual |
デバッグに有用な情報をプリントします。
[in] | flag | トレースフラグの論理和。詳細はTraceFlag 型を参照してください。 |