コード例 #1
0
ファイル: SimpleDHT.cs プロジェクト: kazuki/p2pncs
 public SimpleDHT(IKeyBasedRouter kbr, IMessagingSocket sock, ILocalHashTable lht)
 {
     _kbr = kbr;
     _sock = sock;
     _lht = lht;
     sock.AddInquiredHandler (typeof (GetRequest), MessagingSocket_Inquired_GetRequest);
     sock.AddInquiredHandler (typeof (PutRequest), MessagingSocket_Inquired_PutRequest);
 }
コード例 #2
0
ファイル: PortOpenChecker.cs プロジェクト: kazuki/p2pncs
 public PortOpenChecker(IKeyBasedRouter kbr)
 {
     _msock = kbr.MessagingSocket;
     _kbr = kbr;
     _msock.AddInquiredHandler (typeof (PortCheckStartMessage), Inquired_PortCheckStartMessage);
     _msock.AddInquiredHandler (typeof (PortCheckRequest), Inquired_PortCheckRequest);
     _msock.AddInquiredHandler (typeof (PortCheckResponse), Inquired_PortCheckResponse);
 }
コード例 #3
0
ファイル: MassKeyDeliverer.cs プロジェクト: kazuki/p2pncs
 public MassKeyDeliverer(IDistributedHashTable dht, IMassKeyDelivererLocalStore store, IntervalInterrupter timer)
 {
     _router = dht.KeyBasedRouter;
     _dht = dht;
     _sock = _router.MessagingSocket;
     _store = store;
     _int = timer;
     timer.AddInterruption (Deliver);
     _values = new List<DHTEntry> [_router.RoutingAlgorithm.MaxRoutingLevel];
     for (int i = 0; i < _values.Length; i ++)
         _values[i] = new List<DHTEntry> ();
     _sock.AddInquiredHandler (typeof (Message), Messaging_Inquired);
 }
コード例 #4
0
ファイル: Node.cs プロジェクト: kazuki/p2pncs
 public Node(Interrupters ints, IDatagramEventSocket bindedDgramSock, ITcpListener tcpListener, string db_path, ushort bindUdpPort, ushort bindTcpPort)
 {
     _udpPort = bindUdpPort;
     _tcpPort = bindTcpPort;
     _ints = ints;
     _dgramSock = bindedDgramSock;
     _tcpListener = tcpListener;
     _rtoAlgo = new RFC2988BasedRTOCalculator (TimeSpan.FromSeconds (1), TimeSpan.FromMilliseconds (100), 50, false);
     _messagingSock = new MessagingSocket (_dgramSock, true, SymmetricKey.NoneKey, p2pncs.Serializer.Instance,
         null, ints.MessagingInt, _rtoAlgo, DefaultMessagingRetry, DefaultMessagingRetryBufferSize, DefaultMessagingDuplicationCheckBufferSize);
     _kbrPrivateKey = ECKeyPair.Create (DefaultAlgorithm.ECDomainName);
     _kbr = new SimpleIterativeRouter2 (Key.Create (_kbrPrivateKey), bindTcpPort, _messagingSock, new SimpleRoutingAlgorithm (), p2pncs.Serializer.Instance, true);
     _portChecker = new PortOpenChecker (_kbr);
     _localHT = new OnMemoryLocalHashTable (_kbr, ints.DHTInt);
     IMassKeyDelivererLocalStore mkdLocalStore = _localHT as IMassKeyDelivererLocalStore;
     _dht = new SimpleDHT (_kbr, _messagingSock, _localHT);
     _anonymous = new AnonymousRouter (_dht, _kbrPrivateKey, ints.AnonymousInt);
     ints.KBRStabilizeInt.AddInterruption (Stabilize);
     _mkd = new MassKeyDeliverer (_dht, mkdLocalStore, ints.MassKeyDeliverTimerInt);
     _mmlc = new MMLC (_anonymous, _dht, mkdLocalStore, db_path, ints.StreamSocketTimeoutInt, ints.DFSRePutTimerInt);
     _crawler = new FileInfoCrawler (_tcpListener, _mmlc, _ints.CrawlingTimer);
     _statistics = new Statistics ((AnonymousRouter)_anonymous, _mmlc, _tcpListener);
 }
コード例 #5
0
 public void Setup(Key selfNodeId, IKeyBasedRouter router)
 {
     _selfNodeId = selfNodeId;
     _router = router;
     _routingTable = new List<NodeHandle> [selfNodeId.KeyBits];
 }
コード例 #6
0
ファイル: Statistics.cs プロジェクト: kazuki/p2pncs
 void Setup(IKeyBasedRouter router)
 {
     router.StatisticsNotice += delegate (object sender, StatisticsNoticeEventArgs e) {
         switch (e.Type) {
             case StatisticsNoticeType.Success:
                 Interlocked.Increment (ref _kbrSuccess);
                 break;
             case StatisticsNoticeType.Failure:
                 Interlocked.Increment (ref _kbrFailures);
                 break;
             case StatisticsNoticeType.Hops:
                 _kbrHops.AddSample (e.IntValue);
                 break;
             case StatisticsNoticeType.RTT:
                 _kbrRTT.AddSample ((float)e.TimeSpan.TotalMilliseconds);
                 break;
         }
     };
 }
コード例 #7
0
ファイル: VirtualNode.cs プロジェクト: kazuki/p2pncs
        public VirtualNode(EvalEnvironment env, VirtualNetwork network, EvalOptionSet opt,
			IntervalInterrupter messagingInt, IntervalInterrupter kbrStabilizeInt, IntervalInterrupter anonInt, IntervalInterrupter dhtInt)
        {
            IPAddress pubAdrs = _ipGenerator.Next ();
            int bindPort;
            lock (_rnd) {
                bindPort = _rnd.Next (1024, ushort.MaxValue);
            }
            _pubEP = new IPEndPoint (pubAdrs, bindPort);
            _nodePrivateKey = ECKeyPair.Create (DefaultECDomain);
            _nodeId = Key.Create (_nodePrivateKey);
            VirtualDatagramEventSocket sock = new VirtualDatagramEventSocket (network, pubAdrs);
            sock.Bind (new IPEndPoint (IPAddress.Any, bindPort));
            _msock = opt.BypassMessagingSerializer
                ? (IMessagingSocket)new VirtualMessagingSocket (sock, true, messagingInt, DefaultMessagingRTO, DefaultMessagingRetries, DefaultMessagingRetryBufferSize, DefaultMessagingDupCheckSize)
                : (IMessagingSocket)new MessagingSocket (sock, true, SymmetricKey.NoneKey, Serializer.Instance, null, messagingInt, DefaultMessagingRTO, DefaultMessagingRetries, DefaultMessagingRetryBufferSize, DefaultMessagingDupCheckSize);
            _kbr = new SimpleIterativeRouter2 (_nodeId, 0, _msock, new SimpleRoutingAlgorithm (), Serializer.Instance, opt.NewKBRStrictMode);
            _localDHT = new OnMemoryLocalHashTable (_kbr, dhtInt);
            _dht = new SimpleDHT (_kbr, _msock, _localDHT);
            _dht.RegisterTypeID (typeof (string), 0, new LocalHashTableValueMerger<string> ());
            p2pncs.Net.Overlay.Anonymous.AnonymousRouter.DefaultRelayNodes = opt.AnonymousRouteRelays;
            p2pncs.Net.Overlay.Anonymous.AnonymousRouter.DefaultSubscribeRoutes = opt.AnonymousRouteRoutes + opt.AnonymousRouteBackupRoutes;
            p2pncs.Net.Overlay.Anonymous.AnonymousRouter.AC_DefaultUseSubscribeRoutes = opt.AnonymousRouteRoutes;
            _anonRouter = new AnonymousRouter (_dht, _nodePrivateKey, anonInt);
            _kbrStabilizeInt = kbrStabilizeInt;
            _kbrStabilizeInt.AddInterruption (_kbr.RoutingAlgorithm.Stabilize);
            _env = env;
        }