public Task WriteTo <T>(IPeerProxy peer, T data) { if (!ConnectedPeersProxy.Contains(peer)) { throw new ArgumentException($"Unknown peerClient: {peer}"); } RawPacket rawPacket = new RawPacket(); rawPacket.Payload = PreparePeerData(peer, data); rawPacket.MAC = Hasher.ComputeHash(rawPacket.Payload); byte[] serializedPacket = rawPacket.SerializeToBuffer(); return(peer.SendAsync(serializedPacket)); }