private void MessageReceived(bool successful, PeerMessage message, object state)
{
PeerId id = (PeerId) state;
if (!successful)
{
id.ConnectionManager.CleanupSocket (id, "Could not receive a message");
return;
}
try
{
PeerMessageEventArgs e = new PeerMessageEventArgs(id.TorrentManager, (PeerMessage)message, Direction.Incoming, id);
id.ConnectionManager.RaisePeerMessageTransferred(e);
message.Handle(id);
id.LastMessageReceived = DateTime.Now;
PeerIO.EnqueueReceiveMessage (id.Connection, id.Decryptor, id.TorrentManager.DownloadLimiter, id.Monitor, id.TorrentManager, messageReceivedCallback, id);
}
catch (TorrentException ex)
{
id.ConnectionManager.CleanupSocket (id, ex.Message);
}
}