Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
            }
        }