private static void MessageBodyReceived(bool successful, int transferred, object state)
{
var data = (ReceiveMessageState) state;
if (!successful)
{
ClientEngine.BufferManager.FreeBuffer(data.Buffer);
data.Callback(false, null, data.State);
ReceiveCache.Enqueue(data);
return;
}
data.Decryptor.Decrypt(data.Buffer, 4, transferred);
var message = PeerMessage.DecodeMessage(data.Buffer, 0, transferred + 4, data.Manager);
ClientEngine.BufferManager.FreeBuffer(data.Buffer);
data.Callback(true, message, data.State);
ReceiveCache.Enqueue(data);
}
}