MatchSession

MatchSession

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 を呼んで問題ない。ログイン処理などを参考にされたい。