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