CTR-Pia  5.4.3
Game Communication Engine
 全て クラス ネームスペース 関数 変数 型定義 列挙型 列挙型の値 ページ
クラス nn::pia::transport::Station

ステーションを表現するクラスです。ステーションとは、 Pia のセッションに参加しているマシンを指す言葉です。 [詳細]

+ nn::pia::transport::Stationに対する継承グラフ

構成

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) サンプリング値の個数を取得します。
 
SequenceIdControllerGetSequenceIdController (void)
 SequenceIdController のポインタを得ます(非 const 版)。 この関数はスレッドセーフです。
 
const SequenceIdControllerGetSequenceIdController (void) const
 SequenceIdController のポインタを得ます( const 版)。 この関数はスレッドセーフです。
 
StationState GetState (void) const
 Station の状態を得ます。
 
const common::StationAddressGetStationAddress (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 の状態を示す列挙型です。

列挙型の値:
StationState_Invalid 

無効な StationState です。

StationState_Initial 

このステーションが初期化済みである状態を示します。

StationState_CreatingSession 

このステーションへ接続要求を行い、接続処理を開始した状態を示します。

StationState_JoiningSession 

このステーションから接続要求を受け、接続処理を開始した状態を示します。

StationState_WaitingConnection 

このステーションとの通信の確立を待っている状態を示します。

StationState_Participating 

このステーションと通信可能な状態を示します。

StationState_Leaving 

このステーションとの通信を切断中である状態を示します。

StationState_Max 

StationState の最大値です。

関数

Result nn::pia::transport::Station::GetIdentificationToken ( IdentificationToken pToken)

Station の識別トークンを取得します。

ローカル Station の場合は session::Session::Startup で設定した識別トークンを取得します。 ローカル Station 以外の Station の場合は接続時に共有している識別トークンを取得します。 設定していない場合、この API の処理には成功しますが、取得した識別トークンのデータは全て NULL となります。

識別トークンの取得に失敗した場合、格納先として指定された識別トークンの内部値を変更することはありません。

引数
[out]pTokenStation の識別トークンが取得できた場合、pToken に格納されます。
戻り値
正常に識別トークンを取得できた場合、IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
返るエラーの一覧:

ResultInvalidState 関数が実行可能な状態ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultInvalidArgument 引数で指定されたポインタが有効ではない場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultNoData 指定された Station の識別トークンが取得できなかった場合に返ります。識別トークンの共有が完了していない可能性があります。アプリケーションで適切にハンドリングしてください。

static int32_t nn::pia::transport::Station::GetInitialRttPulseInterval ( void  )
static

RTT 算出のための初期パルス送信間隔を取得します。

RTT 算出のパルス送出は、Station がセッションに参加してから開始されます。 そのため、セッション参加直後の段階では、RTT 算出のためのサンプリング値の個数が 十分ではありません。 そこでシステムは、サンプリング値が十分な個数になるまでは、通常よりも短い間隔で パルス送出を試み、早期にサンプリング値の個数を満足させるように動作します。 本 API は、この初期期間におけるパルス送出間隔を取得します。

戻り値
設定されている初期パルス送信間隔が返ります。単位はミリ秒です。
参照
SetInitialRttPulseInterval, GetRtt, SetRttPulseInterval, GetRttPulseInterval, GetRttSamplingNum
Result nn::pia::transport::Station::GetPlayerInfo ( uint8_t  index,
PlayerInfo pInfo 
)

Station と結びつけられているプレイヤー情報を取得します。

ローカル Station の場合は session::Session::Startup で設定したプレイヤー情報を取得します。 ローカル Station 以外の Station の場合は接続時に共有しているプレイヤー情報を取得します。 ただし、取得したプレイヤー情報のプレイヤー ID の値は不定のため、使用してはいけません。<br >
プレイヤー情報の取得に失敗した場合、格納先として指定された変数の内部値を変更することはありません。

引数
[in]indexStation と結び付けられているプレイヤー情報リストから情報を取得したいプレイヤーのインデックス
[out]pInfo取得するプレイヤー情報のコピー先
戻り値
正常に情報を取得できた場合、IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
返るエラーの一覧:

ResultInvalidState 関数が実行可能な状態ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultInvalidArgument 引数で指定されたインデックスやポインタが有効ではない場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultNoData 指定された Station の情報が取得できなかった場合に返ります。情報の共有が完了していない可能性があります。アプリケーションで適切にハンドリングしてください。

Result nn::pia::transport::Station::GetPrincipalId ( PrincipalId pPrincipalId)

Station のプリンシパル ID を取得します。

プリンシパル ID はセッション参加後に取得できます。 プリンシパル ID の取得に失敗した場合、格納先として指定されたプリンシパル ID の内部値を変更することはありません。
本 API で取得するプリンシパル ID はネットワーク種別によって以下のように設定されます。

  • インターネットマッチメイクの場合、ゲームサーバーから設定されるプリンシパル ID
  • ローカルマッチメイクの場合、ステーションアドレスと Tick 値を元に生成する ID(重複する可能性はほぼゼロです)
  • LAN マッチメイクの場合、ステーションアドレスと Tick 値を元に生成する ID(重複する可能性はほぼゼロです)
引数
[out]pPrincipalIdStation のプリンシパル ID が取得できた場合、pPrincipalId に格納されます。
戻り値
正常にプリンシパル ID を取得できた場合、IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
返るエラーの一覧:

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 で得られる値はネットワーク環境の微細な変動による影響を受けにくく、 ある程度安定した値が返されます。

戻り値
RTT 値が返されます。単位はミリ秒です。
返るエラーの一覧:
InvalidRtt RTT 値を取得できる状態ではなかったときに返される、負の値です。
参照
SetRttPulseInterval, GetRttPulseInterval, SetInitialRttPulseInterval, GetInitialRttPulseInterval, GetRttSamplingNum
int32_t nn::pia::transport::Station::GetRtt ( uint32_t  samplingNum) const

ローカル Station と、この Station 間の RTT を取得します。 RTT 算出に使用するサンプリング数を指定できます。

システムは RTT パルス発信/応答によって得られたサンプリング値を複数個保持しています。 引数指定なしの GetRtt() では、保持されている全てのサンプリング値を用いて中央値を返しますが、 この引数指定ありの GetRtt() は、指定された個数だけのサンプリング値を用いて中央値を返します。 このとき、若い側のサンプリング値が使用されるので、小さな値を指定すると、最近のネットワーク環境を 強く反映した RTT 値が得られます。 その一方で、あまりに小さな値を設定すると、 RTT 値は変動しやすくなります。

引数
[in]samplingNumRTT の算出に際して、直近のサンプリング値をいくつ使用するかを指定します。
戻り値
RTT 値が返されます。単位はミリ秒です。
返るエラーの一覧:
InvalidRtt RTT 値を取得できる状態ではなかったときに返される、負の値です。
参照
SetRttPulseInterval, GetRttPulseInterval, SetInitialRttPulseInterval, GetInitialRttPulseInterval, GetRttSamplingNum
static int32_t nn::pia::transport::Station::GetRttPulseInterval ( void  )
static

RTT 算出のためのパルス送信間隔を取得します。

戻り値
設定されているパルス送信間隔が返ります。単位はミリ秒です。
参照
SetRttPulseInterval, GetRtt, SetInitialRttPulseInterval, GetInitialRttPulseInterval, GetRttSamplingNum
int32_t nn::pia::transport::Station::GetRttSamplingNum ( void  ) const

システムが保持する RTT (Round Trip Time) サンプリング値の個数を取得します。

システムは RTT を取得する目的で、定期的に他 Station に向けてパルスを発信し、 その応答に要した時間を RTT サンプリング値として保存します。 しかし Station がセッションに接続した直後など、パルス発信/応答の処理が 開始されたばかりのために、十分な数のサンプリング値が得られていない期間も存在します。 本 API は、GetRtt() などが返す RTT 値の算出に用いられているサンプリング値の 個数を返しますので、その RTT 値の信頼性/精度を知ることができます。

戻り値
システムが保持しているサンプリング値の個数が返されます。
返るエラーの一覧:
0 RTT 値を取得できる状態ではなかった場合、ゼロが返されます。
参照
GetRtt, SetRttPulseInterval, GetRttPulseInterval, SetInitialRttPulseInterval, GetInitialRttPulseInterval
SequenceIdController* nn::pia::transport::Station::GetSequenceIdController ( void  )
inline

SequenceIdController のポインタを得ます(非 const 版)。 この関数はスレッドセーフです。

戻り値
SequenceIdController インスタンスを指すポインタ。
const SequenceIdController* nn::pia::transport::Station::GetSequenceIdController ( void  ) const
inline

SequenceIdController のポインタを得ます( const 版)。 この関数はスレッドセーフです。

戻り値
SequenceIdController インスタンスを指す const ポインタ。
StationState nn::pia::transport::Station::GetState ( void  ) const
inline

Station の状態を得ます。

この関数はスレッドセーフです。

戻り値
Station の状態を返します。
const common::StationAddress& nn::pia::transport::Station::GetStationAddress ( void  ) const
inline

ステーションアドレスを取得します。

戻り値
設定されていた StationAddress への const 参照が返されます。
StationId nn::pia::transport::Station::GetStationId ( void  ) const
inline

StationId を取得します。

戻り値
Station に対応づけられている StationId が返されます。
StationIndex nn::pia::transport::Station::GetStationIndex ( void  ) const
inline

StationIndex を取得します。

この関数はスレッドセーフです。

アプリケーションがジョイントセッション機能を使用する場合は、この関数を呼び出してはいけません。 動作保証外となります。

戻り値
インスタンスに設定されていた StationIndex が返されます。
static Result nn::pia::transport::Station::SetInitialRttPulseInterval ( int32_t  msec)
static

RTT 算出のための初期パルス送信間隔を設定します。

RTT 算出のパルス送出は、Station がセッションに参加してから開始されます。 そのため、セッション参加直後の段階では、RTT 算出のためのサンプリング値の個数が 十分ではありません。 そこでシステムは、サンプリング値が十分な個数になるまでは、通常よりも短い間隔で パルス送出を試み、早期にサンプリング値の個数を満足させるように動作します。 本 API は、この初期期間におけるパルス送出間隔を設定します。

引数
[in]msec初期パルス送信間隔。単位はミリ秒です。
戻り値
成功すれば、 IsSuccess() が true を返す Result が返されます。
返るエラーの一覧:
ResultInvalidArgument 引数に誤りがあります。非正数を指定した場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
参照
GetInitialRttPulseInterval, GetRtt, SetRttPulseInterval, GetRttPulseInterval, GetRttSamplingNum
static Result nn::pia::transport::Station::SetRttPulseInterval ( int32_t  msec)
static

RTT 算出のためのパルス送信間隔を設定します。

引数
[in]msecパルス送信間隔。単位はミリ秒です。
戻り値
成功すれば、 IsSuccess() が true を返す Result が返されます。
返るエラーの一覧:
ResultInvalidArgument 引数に誤りがあります。非正数を指定した場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
参照
GetRttPulseInterval, GetRtt, SetInitialRttPulseInterval, GetInitialRttPulseInterval, GetRttSamplingNum
virtual void nn::pia::transport::Station::Trace ( uint64_t  flag) const
virtual

デバッグに有用な情報をプリントします。

引数
[in]flagトレースフラグの論理和。詳細はTraceFlag 型を参照してください。