ホストマイグレーションについて説明します。
PiaSession では、ホストマイグレーション(ホストがセッションから離脱した際に残されたクライアントへ権限を委譲し、新たなホストとすることでセッションを継続する機能)を使用できます。
ホストマイグレーションを使用する場合、ホストが離脱処理を呼び出した場合、セッションに残される各クライアントはホストマイグレーションを開始し、次のホストを決定します。
インターネットマッチメイクの場合、inet::NexSessionStartupSetting のメンバー isHostMigrationEnabled の true / false で、ホストマイグレーションの使用/不使用を変更できます。ローカルマッチメイク、LAN マッチメイクの場合はホストマイグレーションは常に有効になります。
ホストマイグレーションでの次期ホストの選定は「単独候補」と「複数候補」の2種類の方式があります。それぞれの特徴について、以下に示します。
ローカルマッチメイクでは単独候補方式、LAN マッチメイク、インターネットマッチメイクでは複数候補方式で次期ホストが選定されます。
ホストマイグレーションを使用する場合、ホストマイグレーションの結果を通知するイベントが発生します。通知されるのは「ホストマイグレーションによるホストの変更」「ホストマイグレーションの失敗」です。
// 状態変化イベントコールバック関数例
void sampleSessionEventCallback(nn::pia::session::Session::EventType eventType, nn::pia::StationId id) { // 引数 eventType は、発生した状態変化の内容を示す列挙型です // 引数 id は、状態変化が発生した対象を示す StationId です switch (eventType) { case nn::pia::session::Session::EventType_EventJoin: { // id が割り当てられたステーションが参加してきた場合 } break; case nn::pia::session::Session::EventType_EventLeave: { // id が割り当てられたステーションが離脱した場合 } break; case nn::pia::session::Session::EventType_SessionHostChanged: // ※ホストマイグレーション使用時限定イベント { // ホストマイグレーション処理によって id のステーションが新たなセッションホストとなった場合 } break; case nn::pia::session::Session::EventType_HostMigrationFailed: // ※ホストマイグレーション使用時限定イベント { // ホストマイグレーション処理に失敗した場合 // このイベントの場合の引数 id は StationIdInvalid になります } break; } } |