Exemple #1
0
        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}");
                    }
                }
            }
        }
Exemple #2
0
        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);
        }