コード例 #1
0
ファイル: ListenManager.cs プロジェクト: mattbab/OctoTorrent
        private void EndCheckEncryption(IAsyncResult result)
        {
            var id = (PeerId)result.AsyncState;

            try
            {
                byte[] initialData;
                EncryptorFactory.EndCheckEncryption(result, out initialData);

                if (initialData != null && initialData.Length == HandshakeMessage.HandshakeLength)
                {
                    var message = new HandshakeMessage();
                    message.Decode(initialData, 0, initialData.Length);
                    HandleHandshake(id, message);
                }
                else if (initialData.Length > 0)
                {
                    throw new Exception("Argh. I can't handle this scenario. It also shouldn't happen. Ever.");
                }
                else
                {
                    PeerIO.EnqueueReceiveHandshake(id.Connection, id.Decryptor, _handshakeReceivedCallback, id);
                }
            }
            catch
            {
                id.Connection.Dispose();
            }
        }
コード例 #2
0
 private void PeerHandshakeSent(PeerId id)
 {
     PeerIO.EnqueueReceiveHandshake(id.Connection, id.Decryptor, _peerHandshakeReceivedCallback, id);
 }