public static T UseNamedPipeKernelServer <T>(this T kernel, string pipeName, DirectoryInfo workingDir) where T : Kernel { if (kernel is null) { throw new ArgumentNullException(nameof(kernel)); } if (string.IsNullOrWhiteSpace(pipeName)) { throw new ArgumentException("Value cannot be null or whitespace.", nameof(pipeName)); } var serverStream = new NamedPipeServerStream(pipeName, PipeDirection.InOut, 1, PipeTransmissionMode.Message, PipeOptions.Asynchronous); Task.Run(() => { serverStream.WaitForConnection(); var kernelCommandAndEventPipeStreamReceiver = new KernelCommandAndEventPipeStreamReceiver(serverStream); var kernelCommandAndEventPipeStreamSender = new KernelCommandAndEventPipeStreamSender(serverStream); var kernelServer = new KernelServer(kernel, kernelCommandAndEventPipeStreamReceiver, kernelCommandAndEventPipeStreamSender, workingDir); var _ = kernelServer.RunAsync(); kernel.RegisterForDisposal(kernelServer); kernel.RegisterForDisposal(serverStream); }); return(kernel); }
public static KernelServer CreateKernelServer(this Kernel kernel, IKernelCommandAndEventReceiver receiver, IKernelCommandAndEventSender sender, DirectoryInfo workingDir) { if (kernel is null) { throw new ArgumentNullException(nameof(kernel)); } var kernelServer = new KernelServer(kernel, receiver, sender, workingDir); kernel.RegisterForDisposal(kernelServer); return(kernelServer); }
public static KernelServer CreateKernelServer(this Kernel kernel, NamedPipeServerStream local, DirectoryInfo workingDir) { if (kernel == null) { throw new ArgumentNullException(nameof(kernel)); } var input = new PipeStreamInputStream(local); var output = new PipeStreamOutputStream(local); var kernelServer = new KernelServer(kernel, input, output, workingDir); kernel.RegisterForDisposal(kernelServer); return(kernelServer); }
public static KernelServer CreateKernelServer(this Kernel kernel, TextReader inputStream, TextWriter outputStream, DirectoryInfo workingDir) { if (kernel == null) { throw new ArgumentNullException(nameof(kernel)); } var input = new TextReaderInputStream(inputStream); var output = new TextWriterOutputStream(outputStream); var kernelServer = new KernelServer(kernel, input, output, workingDir); kernel.RegisterForDisposal(kernelServer); return(kernelServer); }