Пример #1
0
        public MessagingSocket(IDatagramEventSocket sock, bool ownSocket, SymmetricKey key,
			IFormatter formatter, object nullObject, IntervalInterrupter interrupter,
			IRTOAlgorithm rtoAlgo, int maxRetry, int retryBufferSize, int inquiryDupCheckSize)
            : base(sock, ownSocket, interrupter, rtoAlgo, maxRetry, retryBufferSize, inquiryDupCheckSize)
        {
            _key = (key != null ? key : SymmetricKey.NoneKey);
            _formatter = formatter;
            _nullObject = nullObject != null ? nullObject : NullObject.Instance;
            sock.Received += Socket_Received;
            _maxMsgSize = sock.MaxDatagramSize;
            if (_key.AlgorithmType != SymmetricAlgorithmType.None && key.IV != null) {
                _maxMsgSize -= _maxMsgSize % key.IV.Length;
                if (key.Padding != System.Security.Cryptography.PaddingMode.None)
                    _maxMsgSize --;
                if (key.EnableIVShuffle)
                    _maxMsgSize -= key.IV.Length;
            }
            _maxMsgSize -= MAX_HEADER_SIZE;
        }
Пример #2
0
 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);
 }
Пример #3
0
 public IMessagingSocket CreateMessagingSocket(IDatagramEventSocket sock, IRTOAlgorithm rtoAlgo, int retries, int retryBufferSize, int dupCheckSize)
 {
     VirtualDatagramEventSocket vsock = sock as VirtualDatagramEventSocket;
     if (_opt.BypassMessagingSerializer && vsock != null)
         return new VirtualMessagingSocket (vsock, true, _msgInt2, rtoAlgo, retries, retryBufferSize, dupCheckSize);
     else
         return new MessagingSocket (sock, true, SymmetricKey.NoneKey, Serializer.Instance, null, _msgInt2, rtoAlgo, retries, retryBufferSize, dupCheckSize);
 }
Пример #4
0
        public VirtualMessagingSocket(VirtualDatagramEventSocket baseSock, bool ownSocket,
			IntervalInterrupter interrupter, IRTOAlgorithm rtoAlgo, int maxRetry, int retryBufferSize, int inquiryDupCheckSize)
            : base(baseSock, ownSocket, interrupter, rtoAlgo, maxRetry, retryBufferSize, inquiryDupCheckSize)
        {
            baseSock.VirtualNetwork.AddVirtualMessagingSocketToVirtualNode (baseSock, this);
        }