Net-Z のホストマイグレーション実行時のコールバック関数 [詳解]
#include <NetZ/src/Core/HostMigration/HostMigrationCallback.h>
公開型 | |
typedef qBool(* | UpdateSessionHostCB) (void *pMatchMakingClientClient, qUnsignedInt32 gatheringID) |
ホストマイグレーション発生時に呼び出されるコールバック関数の定義です [詳解] | |
公開メンバ関数 | |
HostMigrationCallback (void *pMatchMakingClientClient, UpdateSessionHostCB updateSessionHostCB, qInt32 iPriority=600) | |
コンストラクタです。 [詳解] | |
virtual | ~HostMigrationCallback () |
デストラクタです。 | |
qInt32 | GetPriority () const |
OperationCallbackの優先度を取得します。 [詳解] | |
void | Register (qUnsignedInt32 idGathering) |
ホストマイグレーションの対象を登録します [詳解] | |
qBool | SessionHostIsOrphan () const |
自分が孤立したセッションホストであるかを判定します [詳解] | |
void | Unregister (qUnsignedInt32 idGathering) |
ホストマイグレーションの対象から削除します [詳解] | |
Net-Z のホストマイグレーション実行時のコールバック関数
Net-Z のホストマイグレーション実行時のコールバック関数です。Net-Z のホストマイグレーションが行われると、 自動的に新しいホストがゲームサーバーに登録されます。
NetZ のホストマイグレーションは自動的に行われますが、同時に 2 人以上のプレーヤーがセッションホストであるかのように 振舞うことがあります。このような場合にゲームサーバーに間違ったホストが登録されてしまわないように、NEX では 他のステーションからの投票があった新しいホストがゲームサーバーに登録されます。
ただし、セッション内に 2人しかプレーヤーがおらず、タイムアウトなどが発生してお互いのステーションを異常状態で見失った場合は どちらがホストであるのかを投票では決定することができません。 両者がどちらも自分がホストであると認識している場合(すなわち孤立状態に陥っている場合)はセッションを終了する か、新しくマッチメイクセッションを登録することを推奨します。詳細は、 HostMigrationCallback::SessionHostIsOrphan() の API リファレンスを参照してください。
typedef qBool(* nn::nex::HostMigrationCallback::UpdateSessionHostCB) (void *pMatchMakingClientClient, qUnsignedInt32 gatheringID) |
ホストマイグレーション発生時に呼び出されるコールバック関数の定義です
[in] | pMatchMakingClientClient | コンストラクタで指定した MatchmakeExtensionClient のポインタが渡されます |
[in] | gatheringID | Register() で指定した GatheringID が渡されます |
nn::nex::HostMigrationCallback::HostMigrationCallback | ( | void * | pMatchMakingClientClient, |
UpdateSessionHostCB | updateSessionHostCB, | ||
qInt32 | iPriority = 600 |
||
) |
コンストラクタです。
[in] | pMatchMakingClientClient | 有効な( Bind された) MatchmakeExtensionClient |
[in] | updateSessionHostCB | ホストマイグレーション発生時に呼び出されるコールバック関数。通常 MatchMakingClient::StaticUpdateSessionHost もしくは MatchMakingClient::StaticUpdateSessionHostWithOwner を指定します。 |
[in] | iPriority | 優先度。デフォルト値は 600 です。 |
void nn::nex::HostMigrationCallback::Register | ( | qUnsignedInt32 | idGathering | ) |
ホストマイグレーションの対象を登録します
P2P セッションの生成・参加後( Session::CreateSession 関数、Session::JoinSession 関数の非同期処理完了後) に行われる必要があります。
[in] | idGathering | 登録するギャザリングの ID |
void nn::nex::HostMigrationCallback::Unregister | ( | qUnsignedInt32 | idGathering | ) |
ホストマイグレーションの対象から削除します
ホストマイグレーションの対象から削除します。 指定したギャザリング ID が Register() されていない場合は何も行いません。 NetZ::Terminate で終了処理をする前に実行してください。
[in] | idGathering | 削除するギャザリングの ID |
qBool nn::nex::HostMigrationCallback::SessionHostIsOrphan | ( | ) | const |
自分が孤立したセッションホストであるかを判定します
自分が孤立したセッションホストであるかを判定します。孤立状態に陥いっても P2P セッションを継続することは 可能ですが、他のクライアントがこの P2P セッションに参加することはできなくなります。 この問題を避けるためには、今まで入っていたマッチメイクセッションから退出し、新しくマッチメイクセッションを 登録する必要があります。そのとき、既存の HostMigrationCallback のインスタンスを破棄し、 新しく HostMigrationCallback のインスタンスを生成して新しいマッチメイクセッションのIDを登録しなおしてください。 SessionHostIsOrphan() が true を返したときにHostMigrationCallback のインスタンスを再利用することはできません。
下記の条件を全て満たしたとき、孤立したセッションホストであると判定します。
ChangeMasterStation が実行されたときには孤立状態に移行していないかを確認するようにしてください。 フレーム毎にポーリングしても構いません。
true 孤立している。
false 孤立していない。
|
inherited |
OperationCallbackの優先度を取得します。
OperationCallbackは数値による優先順にしたがって呼び出されます。 優先度は正または負の整数で、操作に関係のあるイベントをシステムが実行する順序を決定します。 優先度0は、操作の実行のために予約されています。そのため、アプリケーション側で利用できる 優先度は-1024から-1までと、1から1024までとなります。システム側で利用する優先度はこれ以外を利用します。 詳細につきましては、OperationManager を参照して下さい。