protected async Task Send(object data, string target, CancellationToken token) { var msg = new Envelope { From = Address, Data = data }; if (!_serializationManager.CanSerialize(msg)) { throw new InvalidOperationException("Cannot serialize data"); } using (var ms = new MemoryStream()) { using (var bw = new BinaryWriter(new WrapperStream(ms), Encoding.UTF8)) { bw.Write(MagicHeader); bw.Write(EnvelopeVersionV10); _serializationManager.Serialize(msg, bw); ms.Position = 0; } await _channel.Send(ms, target, token).ConfigureAwait(false); } }
public bool CanSerialize(object data, SerializationManager manager) { var l = ToList(data); if (l == null) { return(false); } return(l.All(i => manager.CanSerialize(i))); }