public void SerializeObjectToBufferWriter()
 {
     using (ByteBufferWriter bufferWriter = new ByteBufferWriter())
     {
         Cbor.Serialize(SimpleObject, typeof(SimpleObject), bufferWriter, Options);
         TestBuffer(bufferWriter.WrittenSpan.ToArray());
     }
 }
 public static byte[] Serialize(object data)
 {
     using (var buffer = new ByteBufferWriter())
     {
         Cbor.Serialize(data, data.GetType(), buffer, Options);
         return(buffer.WrittenSpan.ToArray());
     }
 }
Beispiel #3
0
        public override Task WriteResponseBodyAsync(OutputFormatterWriteContext context)
        {
#if (NETCOREAPP2_1 || NETCOREAPP2_2)
            return(Cbor.SerializeAsync(context.Object, context.ObjectType, context.HttpContext.Response.Body, _cborOptions));
#else
            PipeWriter writer = context.HttpContext.Response.BodyWriter;
            Cbor.Serialize(context.Object, context.ObjectType, writer, _cborOptions);

            ValueTask <FlushResult> flushTask = writer.FlushAsync();

            if (flushTask.IsCompleted)
            {
                ValueTask completeTask = writer.CompleteAsync();

                if (completeTask.IsCompleted)
                {
                    return(Task.CompletedTask);
                }

                return(FinishCompleteAsync(completeTask));
            }

            return(FinishFlushAsync(flushTask));

            async Task FinishFlushAsync(ValueTask <FlushResult> localFlushTask)
            {
                await localFlushTask.ConfigureAwait(false);

                await writer.CompleteAsync();
            }

            async Task FinishCompleteAsync(ValueTask localCompleteTask)
            {
                await localCompleteTask.ConfigureAwait(false);
            }
#endif
        }