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 void Serialize(object data, BinaryWriter writer, SerializationManager manager) { foreach (var(name, value) in GetProperties((TInformation)data)) { writer.Write(name); manager.Serialize(value, writer); } writer.Write(string.Empty); }
public void Serialize(object data, BinaryWriter writer, SerializationManager manager) { var l = ToList(data); writer.Write(ListType(data)); writer.Write(l.Count); foreach (var i in l) { manager.Serialize(i, writer); } }