ロビー クライアントとの通信
ロビー クライアントとの通信
ロビー対象アプリケーションと関連するロビー クライアントのやり取りの大半は、間接的に行われる。アプリケーションがロビー クライアントに影響する何らかの処理を実行 (または逆にロビー クライアントがアプリケーションに影響する何らかの処理を実行) すると、Microsoft® DirectPlay® が適切なメッセージを送信する。たとえば、アプリケーションが接続の設定を変更すると、DirectPlay がロビー クライアントに通知し、新しい設定内容を提供する。ただし、ロビー クライアントに情報を直接提供するため、以下の 2 つのメソッドも用意されている。それらは、IDirectPlay8LobbiedApplication::UpdateStatus および IDirectPlay8LobbiedApplication::Send である。
ゲームの状態に以下の変化のいずれかが発生したときは、ロビー クライアントに通知する必要がある。
- セッションが接続された。
- セッションが接続できない。
- セッションが切断された。
- セッションが終了した。
- セッション ホストが移行した。
- このコンピュータがセッション ホストになった。
ロビー クライアントにこれらの状態変化のいずれかを通知するには、IDirectPlay8LobbiedApplication::UpdateStatus を呼び出し、dwStatus パラメータを適切な値に設定する。ロビー クライアントは、状態の変化を知らせる DPL_MSGID_SESSION_STATUS メッセージを受信する。
IDirectPlay8LobbiedApplication::Send メソッドにより、アプリケーションはロビー クライアントに直接メッセージを送信できる。DirectPlay はロビー クライアントにデータをそのまま渡す。そのデータの処理は、ロビー クライアントが行わなければならない。
ロビー クライアントも、アプリケーションにデータを直接送信することができる。データは、ロビー クライアントのメッセージ ハンドラに、DPL_MSGID_RECEIVE メッセージで渡される。DirectPlay はアプリケーションにデータをそのまま渡す。ロビー クライアントは、このデータを処理しなければならない。