7.15. 応用機能 - セッション参加の承認

ステーションがセッションに参加するときに参加を許可するか判定することができます。

承認判定用コールバックの登録

セッションホストのみの権限として、セッションへの参加要求に対して「承認」か「拒否」かを判定することができます。判定を行う場合は、判定用コールバック関数を用意して Session へ登録する必要があります。判定用コールバック関数を登録していない状態で参加要求が来た場合は、基本的に承認されます。 

コード 7-34. 判定用コールバック関数の登録/解除
// Session クラスのインスタンスが存在する場合に実行可能です
// Session クラスへ判定用コールバック関数を登録
nn::pia::session::Session::GetInstance()->RegisterJoiningApprovalCallback(sampleJoinApprovalCallback);
 
// 登録~登録解除の間、セッションホストとして参加要求を受信した場合に、コールバック関数が呼び出されます
 
// Session クラスの判定用コールバック関数登録を解除
nn::pia::session::Session::GetInstance()->UnregisterJoiningApprovalCallback();

承認の判定

アプリケーション側で判定用コールバックの動作を実装します。

警告:

コールバック関数内では、長時間ブロックするような処理を記述してはいけません。システム処理に悪影響が出る可能性があります。

判定用コールバック以外で参加要求が拒否されるのは「セッション満員時」と「ホストマイグレーション中」のみです。

コード 7-35. 参加要求の承認判定コールバック関数の例
// 参加要求の承認判定用コールバック関数例
bool sampleJoinApprovalCallback(const nn::pia::transport::Station::IdentificationToken* pRequesterToken)
{
    bool judgment;
    // 参加要求に対する判定を記述します
    // 引数 pRequesterToken は、参加要求者の識別トークンへのポインタです
    // 長時間ブロックするような処理は記述してはいけません。システム処理へ影響が出る可能性があります
    if (judgment)
    {
        // true を返すと「承認」となります
        return true;
    }
    else
    {
        // false を返すと「拒否」となります
        return false;
    }
}