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); }
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); }
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); }