示例#1
0
 public JobPusher()
 {
     _nodesList = new List <string>();
     _nListLock = new ReaderWriterLockSlim();
     _index     = -1;
     _aT        = new AsyncTransfer <Job>();
 }
示例#2
0
        private void AcquireTransferCancellationHandler(object _acquireNode, bool canceling)
        {
            LinkedListNode <Message> acquireNode = (LinkedListNode <Message>)_acquireNode;
            AsyncTransfer            acquire     = acquireNode.Value.transfer;

            if (acquire.TryLock())
            {
                // To access shared mutable state we must acquire the lock
                lock (theLock)
                {
                    pendingMessages.Remove(acquireNode);
                }

                // Release the resources associated with the async acquire.
                acquire.Dispose(canceling);

                // Complete the TaskCompletionSource to RanToCompletion (timeout)
                // or Canceled final state.
                if (canceling)
                {
                    acquire.SetCanceled();
                }
                else
                {
                    acquire.SetResult(false);
                }
            }
        }
示例#3
0
 /// <summary>
 /// Runs this instance.
 /// </summary>
 public void Run()
 {
     try
     {
         var listener = new TcpListener(IPAddress.Parse("127.0.0.1"), _serverPort);
         listener.Start();
         while (true)
         {
             if (listener.Pending())
             {
                 var trans    = new AsyncTransfer <T>(listener.AcceptTcpClient());
                 var newActor = _actor.NewActor(trans);
                 (new Thread(newActor.Act)).Start();
             }
             else
             {
                 Thread.Sleep(1000);
             }
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }
示例#4
0
 internal Message(T message, AsyncTransfer transfer = null)
 {
     this.message  = message;
     this.transfer = transfer;
 }
示例#5
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="settings"></param>
        public ConnectionManager(ClientEngine engine)
        {
            this.engine = engine;

            this.endCheckEncryptionCallback = delegate(IAsyncResult result) { ClientEngine.MainLoop.Queue(delegate { EndCheckEncryption(result); }); };
            this.endSendMessageCallback = delegate(bool s, int c, object o) { ClientEngine.MainLoop.Queue(delegate { EndSendMessage(s, c, o); }); };
            this.endCreateConnectionCallback = delegate(bool succeeded, object state) { ClientEngine.MainLoop.Queue(delegate { EndCreateConnection(succeeded, state); }); };
            this.incomingConnectionAcceptedCallback = delegate(bool s, int c, object o) { ClientEngine.MainLoop.Queue(delegate { IncomingConnectionAccepted(s, c, o); }); };

            this.bitfieldSentCallback = new MessagingCallback(PeerBitfieldSent);
            this.handshakeSentCallback = new MessagingCallback(this.PeerHandshakeSent);
            this.handshakeReceievedCallback = delegate(bool s, int c, object o) { ClientEngine.MainLoop.Queue(delegate { PeerHandshakeReceived(s, c, o); }); };
            this.messageSentCallback = new MessagingCallback(this.PeerMessageSent);

            this.torrents = new MonoTorrentCollection<TorrentManager>();
        }
示例#6
0
 public AsyncIO(IConnection connection, byte[] buffer, int offset, int total, AsyncTransfer callback, object state, RateLimiter limiter, ConnectionMonitor managerMonitor, ConnectionMonitor peerMonitor)
 {
     Connection = connection;
     Buffer = buffer;
     Offset = offset;
     Count = 0;
     Callback = callback;
     ManagerMonitor = managerMonitor;
     PeerMonitor = peerMonitor;
     RateLimiter = limiter;
     State = state;
     Total = total;
 }
示例#7
0
 internal static void EnqueueSend(IConnection connection, byte[] buffer, int offset, int count, AsyncTransfer callback, object state, RateLimiter limiter, ConnectionMonitor managerMonitor, ConnectionMonitor peerMonitor)
 {
     AsyncIO io = new AsyncIO(connection, buffer, offset, count, callback, state, limiter, managerMonitor, peerMonitor);
     EnqueueSend(io);
 }
示例#8
0
 internal static void EnqueueSend(IConnection connection, byte[] buffer, int offset, int count, AsyncTransfer callback, object state)
 {
     EnqueueSend(connection, buffer, offset, count, callback, state, null, null, null);
 }
示例#9
0
 internal static void EnqueueSend(IConnection connection, ArraySegment<byte> buffer, int offset, int count, AsyncTransfer callback, object state, RateLimiter limiter, ConnectionMonitor managerMonitor, ConnectionMonitor peerMonitor)
 {
     EnqueueSend(connection, buffer.Array, buffer.Offset + offset, count, callback, state, limiter, managerMonitor, peerMonitor);
 }
示例#10
0
 internal static void EnqueueReceive(IConnection connection, ArraySegment<byte> buffer, int offset, int count, AsyncTransfer callback, object state)
 {
     EnqueueReceive(connection, buffer, offset, count, callback, state, null, null, null);
 }
示例#11
0
        private byte[] Y; // 2^X mod P

        #endregion Fields

        #region Constructors

        public EncryptedSocket(EncryptionTypes allowedEncryption)
        {
            random = RNGCryptoServiceProvider.Create();
            hasher = SHA1.Create();

            GenerateX();
            GenerateY();

            InitialPayload = new byte[0];
            RemoteInitialPayload = new byte[0];

            doneSendCallback = doneSend;
            doneReceiveCallback = doneReceive;
            doneReceiveYCallback = delegate { doneReceiveY(); };
            doneSynchronizeCallback = delegate { doneSynchronize(); };
            fillSynchronizeBytesCallback = fillSynchronizeBytes;

            bytesReceived = 0;

            SetMinCryptoAllowed(allowedEncryption);
        }
示例#12
0
 public AsyncReceiver(TcpClient tclient, AsyncTransfer <T> parent)
 {
     _tClient = tclient;
     _parent  = parent;
 }