public SimpleIterativeRouter2(Key self, ushort tcpPort, IMessagingSocket sock, IKeyBasedRoutingAlgorithm algo, IFormatter formatter, bool isStrictMode) { _selfId = self; _tcpPort = tcpPort; _sock = sock; _algo = algo; _strict_mode = isStrictMode; // メッセージに含むことの出来る大体の最大NodeHandle数を計算 int overhead, nodeHandleBytes; { using (MemoryStream ms = new MemoryStream ()) { formatter.Serialize (ms, new NextHopResponse (self, _tcpPort, true, new NodeHandle[0])); overhead = (int)ms.Length; } using (MemoryStream ms = new MemoryStream ()) { formatter.Serialize (ms, new NodeHandle (self, new IPEndPoint (IPAddress.Loopback, 0), tcpPort)); nodeHandleBytes = (int)ms.Length; } } _maxNodeHandlesPerResponse = (dgramMaxSize - overhead) / nodeHandleBytes; algo.Setup (self, this); sock.AddInquiredHandler (typeof (NextHopQuery), MessagingSocket_Inquired_NextHopQuery); sock.AddInquiredHandler (typeof (CloseNodeQuery), MessagingSocket_Inquired_CloseNodeQuery); }
public SimpleIterativeRouter2(Key self, ushort tcpPort, IMessagingSocket sock, IKeyBasedRoutingAlgorithm algo, IFormatter formatter) : this(self, tcpPort, sock, algo, formatter, false) { }