Beispiel #1
0
        public async Task <bool> SerializeAsync(
            IRemoteNode receiver,
            object message,
            StartSerializeAsync start,
            CancellationToken cancellationToken)
        {
            if (receiver == null)
            {
                throw new ArgumentNullException(nameof(receiver));
            }

            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            if (start == null)
            {
                throw new ArgumentNullException(nameof(start));
            }

            if (message is FooMessage)
            {
                var output = await start(FooMessage.Id, FooMessage.Size, cancellationToken);

                WriteFooPayload(output, ((FooMessage)message).Value1);
            }
            else
            {
                return(false);
            }

            return(true);
        }
Beispiel #2
0
        public async Task <bool> SerializeAsync(
            IRemoteNode receiver,
            object message,
            StartSerializeAsync start,
            CancellationToken cancellationToken)
        {
            if (receiver == null)
            {
                throw new ArgumentNullException(nameof(receiver));
            }

            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            if (start == null)
            {
                throw new ArgumentNullException(nameof(start));
            }

            if (message is BarMessage)
            {
                byte[] payload;

                using (var buffer = new MemoryStream())
                    using (var writer = new BinaryWriter(buffer, Encoding.UTF8, true))
                    {
                        writer.Write(((BarMessage)message).Value1);

                        payload = buffer.ToArray();
                    }

                var output = await start(BarMessage.Id, payload.Length, cancellationToken);

                await output.WriteAsync(payload, 0, payload.Length, cancellationToken);
            }
            else
            {
                return(false);
            }

            return(true);
        }
Beispiel #3
0
        public async Task <bool> SerializeAsync(
            IRemoteNode receiver,
            object message,
            StartSerializeAsync start,
            CancellationToken cancellationToken)
        {
            if (receiver == null)
            {
                throw new ArgumentNullException(nameof(receiver));
            }

            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            if (start == null)
            {
                throw new ArgumentNullException(nameof(start));
            }

            if (message is BazMessage)
            {
                var output = await start(BazMessage.Id, 8, cancellationToken);

                using (var writer = new BinaryWriter(output, Encoding.UTF8, true))
                {
                    writer.Write(((BazMessage)message).Value1);
                }
            }
            else
            {
                return(false);
            }

            return(true);
        }