public async Task EncodeAsync<T>(T obj, CancellationToken cancellationToken) { var bytes = (byte[])(object)obj; if (bytes == null) throw new InvalidDataException("input must be byte array"); if (_codec._multicodec) await _stream.WriteAsync(_codec.Header, 0, _codec.Header.Length, cancellationToken); await MessageIo.WriteMessageAsync(_stream, bytes, flush: true, cancellationToken: cancellationToken); }
public async Task EncodeAsync<T>(T obj, CancellationToken cancellationToken) { if (_codec._multicodec) await _stream.WriteAsync(_codec.Header, 0, _codec.Header.Length, cancellationToken); if (_codec._msgio) { await MessageIo.WriteMessageAsync(_stream, Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(obj, Formatting.None)), cancellationToken: cancellationToken); } else { var bytes = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(obj, Formatting.None) + '\n'); await _stream.WriteAsync(bytes, 0, bytes.Length, cancellationToken); } }
public async Task EncodeAsync <T>(T obj, CancellationToken cancellationToken = default(CancellationToken)) { if (_codec._multicodec) { await _stream.WriteAsync(_codec.Header, 0, _codec.Header.Length, cancellationToken); } if (_codec._msgio) { await MessageIo.WriteMessageAsync(_stream, Serialize(obj), cancellationToken : cancellationToken); } else { ProtoBuf.Serializer.SerializeWithLengthPrefix(_stream, obj, PrefixStyle.Fixed32BigEndian); } await _stream.FlushAsync(cancellationToken); }