private async Task ServerAsync(CancellationToken cancellationToken) { using (Logger.BeginScope($"{nameof(ServerAsync)}")) { Logger.LogInformation($"Begin pipe server.\r\n{PipeNameLogString}"); while (true) { using (var stream = new NamedPipeServerStream(PipeName, PipeDirection.InOut, NumberOfServerInstances)) { Logger.LogDebug($"Wait for connection."); await stream.WaitForConnectionAsync(cancellationToken); Logger.LogDebug($"Connected to pipe client."); var request = ObjectReaderWriter.ReadObject <TIn>(stream); var response = Func(request); ObjectReaderWriter.WriteObject(stream, response); Logger.LogInformation($"End connection.\r\n{PipeNameLogString}"); } } } }
private TIn GetResponse(NamedPipeClientStream stream, TOut request) { ObjectReaderWriter.WriteObject(stream, request); var response = ObjectReaderWriter.ReadObject <TIn>(stream); Logger.LogInformation($"End connection.\r\n{ConnectionLogString}"); return(response); }