明示的な接続先の指定

明示的な接続先の指定

hand.cpp は明示的に接続先を指定している。これは nine core と似ている。

config1()

config1() と config2() は hand.cpp で定義されている。

bool config1(nine::system::SystemServer& sv)
{
   const char* me = "1";
   nine::system::LinkInfo link;
   link.addNodeListen("0.0.0.0", 10001);
   link.addNodeAccept(me, "2");
   return sv.initialize(&link);
}

  1. LinkInfo を生成
  2. 0.0.0.0:10001 へ listen を登録
  3. "2" からの accept を登録。
  4. SystemServer::initialize

ここで行っていることは、"2" の接続を待ち受けるノード定義である。 addNodeListen() で汎用的な受け入れ口を用意し、addNodeAccept() で実際に接続を受け付ける相手を登録している。自分の名前は "1" である。

config2()

config2 は config1 のすぐ下に書かれている。

bool config2(nine::system::SystemServer& sv)
{
   const char* me = "2";
   nine::system::LinkInfo link;
   link.addNodeConnect(me, "1", "127.0.0.1", 10001);
   link.format(std::cout);
   return sv.initialize(&link);
}

  1. LinkInfo を生成
  2. 127.0.0.1:10001 への connect を登録
  3. SystemServer::initialize

こちらは接続を行うノードの設定となっている。

config1() で待ち受けているポートへの connect を登録している。アドレスが 127.0.0.1 なので、config1 と同一マシン上で動かさないとならない。別マシンの場合は必要に応じてアドレスを変更すればよい。