MatchSession はネットワーク接続に関わる情報を扱う。 SessionHandle の session() 関数で得られる。
主要な機能は次の二つである:
class Session
{
public:
inline int network() const { return m_network; }
inline int connection() const { return m_connection; }
void queueMessage(nine::Message* pMsg);
};
class MatchSession: public Session
{
public:
enum {
NET_GAMESERVER, NET_CLIENT, NUM_NETS,
};
inline bool isServer() const { return network() == NET_GAMESERVER; }
inline bool isClient() const { return network() == NET_CLIENT; }
};
フレームワークは二つのネットワークを持つ。
セッションオブジェクトには、どちらのネットワークに由来するものなのかを判別する機能が備わっている。
isServer が真を返せばゲームサーバー用のネットワークで、isClient が真を返せばゲームクライアント用のネットワークである。
queueMessage(nine::Message*) を用いて、メッセージを送信することができる。
メッセージは一旦キューイングされ、すぐには送信されない。メッセージオブジェクトはフレームワーク側で delete されるので、ヒープ領域に確保する必要がある。
リクエストメッセージの処理では、フレームワークはレスポンスメッセージを送出した後に、キューイングされたメッセージを送信する。 このため、Response-Notify というプロトコルシーケンスの場合でも、レスポンスの送信を気にせず queueMessage を呼んで問題ない。ログイン処理などを参考にされたい。