Beispiel #1
0
            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);
            }
Beispiel #2
0
            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);
                }
            }
Beispiel #3
0
            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);
            }