//public Task WriteStringAsync(string text) //{ // var buffer = Encoding.UTF8.GetBytes(text); // return WriteMessageAsync(buffer, 0, buffer.Length); //} internal async Task WriteMessageAsync(IpcBufferMessageContext ipcBufferMessageContext) { await QueueWriteAsync(async ack => { await IpcMessageConverter.WriteAsync(NamedPipeClientStream, IpcConfiguration.MessageHeader, ack, ipcBufferMessageContext, IpcContext.Logger); await NamedPipeClientStream.FlushAsync(); }); }
private static Stream IpcBufferMessageContextToStream(IpcBufferMessageContext ipcBufferMessageContext) { var stream = new MemoryStream(); foreach (var ipcBufferMessage in ipcBufferMessageContext.IpcBufferMessageList) { stream.Write(ipcBufferMessage.Buffer, ipcBufferMessage.Start, ipcBufferMessage.Count); } stream.Position = 0; return(stream); }
public static async Task WriteAsync(Stream stream, byte[] messageHeader, Ack ack, IpcBufferMessageContext ipcBufferMessageContext, ILogger logger) { logger.Debug($"[{nameof(IpcMessageConverter)}] Start Write {ipcBufferMessageContext.Summary}"); var binaryWriter = await WriteHeaderAsync(stream, messageHeader, ack); await binaryWriter.WriteAsync(ipcBufferMessageContext.Length); foreach (var ipcBufferMessage in ipcBufferMessageContext.IpcBufferMessageList) { await stream.WriteAsync(ipcBufferMessage.Buffer, ipcBufferMessage.Start, ipcBufferMessage.Count); } logger.Debug($"[{nameof(IpcMessageConverter)}] Finished Write {ipcBufferMessageContext.Summary}"); }
/// <summary> /// 向服务端发送消息 /// </summary> /// <remarks> /// 框架层使用的 /// </remarks> internal async Task WriteMessageAsync(IpcBufferMessageContext ipcBufferMessageContext) { await DoubleBufferTask.AddTaskAsync(WriteMessageAsyncInner); async Task WriteMessageAsyncInner() { await IpcMessageConverter.WriteAsync ( NamedPipeClientStream, IpcConfiguration.MessageHeader, AckManager.GetAck(), ipcBufferMessageContext, Logger ); await NamedPipeClientStream.FlushAsync(); } }
public IpcClientRequestMessage(IpcBufferMessageContext ipcBufferMessageContext, Task <IpcBufferMessage> task, IpcClientRequestMessageId messageId) { IpcBufferMessageContext = ipcBufferMessageContext; Task = task; MessageId = messageId; }