public async Task ExecuteAsync(ActionContext context, DeliverResult deliverResult, IComponent Component) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (deliverResult == null) { throw new ArgumentNullException(nameof(deliverResult)); } var response = context.HttpContext.Response; ResponseContentTypeHelper.ResolveContentTypeAndEncoding( DefaultContentType, response.ContentType, DefaultContentType, out var resolvedContentType, out var resolvedContentTypeEncoding); response.ContentType = resolvedContentType; if (deliverResult.StatusCode != null) { response.StatusCode = deliverResult.StatusCode.Value; } var serializerSettings = deliverResult.SerializerSettings ?? _options.SerializerSettings; DeliverResultExecuting(_logger, deliverResult.Model); deliverResult.JsonModel = Component.Render(deliverResult.Model); using (var writer = _writerFactory.CreateWriter(response.Body, resolvedContentTypeEncoding)) { using (var jsonWriter = new JsonTextWriter(writer)) { jsonWriter.ArrayPool = _charPool; jsonWriter.CloseOutput = false; jsonWriter.AutoCompleteOnClose = false; var jsonSerializer = JsonSerializer.Create(serializerSettings); jsonSerializer.Serialize(jsonWriter, deliverResult.JsonModel); } // Perf: call FlushAsync to call WriteAsync on the stream with any content left in the TextWriter's // buffers. This is better than just letting dispose handle it (which would result in a synchronous write). await writer.FlushAsync(); } }
public override void ReadBytes(byte[] byts) { MyHead = CMPPMsgHeader.Read(byts); Msg_Id = ReverseByteOrder.ReverseBytes(BitConverter.ToUInt64(byts, 12)); Result = (DeliverResult)ReverseByteOrder.ReverseBytes(BitConverter.ToUInt32(byts, 20)); }