Beispiel #1
0
        public void RunPersistentPipeConnection(string pipeName, IMessageProcessor messageProcessor)
        {
            _persistentPipeServerStream = new NamedPipeServerStream(pipeName, PipeDirection.InOut, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous);

            AsyncCallback ac = null;

            ac = o =>
            {
                NamedPipeServerStream server = (NamedPipeServerStream)o.AsyncState;
                server.EndWaitForConnection(o);

                while (true)
                {
                    if (!messageProcessor.ProcessMessages(server))
                    {
                        break;
                    }
                }

                server.Dispose();
                server = new NamedPipeServerStream(pipeName, PipeDirection.InOut, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous);
                server.BeginWaitForConnection(ac, server);
            };
            _persistentPipeServerStream.BeginWaitForConnection(ac, _persistentPipeServerStream);
        }
        public void RunNamedPipeServer(string pipeName, IMessageProcessor messageProcessor)
        {
            _pipeServer = new NamedPipeServerStream(GetUserPipeName(pipeName), PipeDirection.In, 1, PipeTransmissionMode.Message,
                                                    PipeOptions.Asynchronous);

            AsyncCallback ac = null;

            ac = o =>
            {
                if (disposed)
                {
                    return;
                }
                NamedPipeServerStream server = (NamedPipeServerStream)o.AsyncState;
                try
                {
                    server.EndWaitForConnection(o);

                    messageProcessor.ProcessMessages(server);
                    server.Disconnect();

                    server.BeginWaitForConnection(ac, server);
                }
                catch (Exception e)
                {
                    Logging.LogException(e);
                }
            };
            _pipeServer.BeginWaitForConnection(ac, _pipeServer);
        }
Beispiel #3
0
        public void RunNamedPipeServer(string pipeName, IMessageProcessor messageProcessor)
        {
            _pipeServer = new NamedPipeServerStream(pipeName, PipeDirection.In, 1, PipeTransmissionMode.Message,
                                                    PipeOptions.Asynchronous);

            AsyncCallback ac = null;

            ac = o =>
            {
                NamedPipeServerStream server = (NamedPipeServerStream)o.AsyncState;
                server.EndWaitForConnection(o);

                messageProcessor.ProcessMessages(server);
                server.Disconnect();

                server.BeginWaitForConnection(ac, server);
            };
            _pipeServer.BeginWaitForConnection(ac, _pipeServer);
        }
Beispiel #4
0
        private void RunReceivingServer(string pipeName, IMessageProcessor messageProcessor)
        {
            PipeSecurity pipeSecurity = new PipeSecurity();

            pipeSecurity.SetAccessRule(new PipeAccessRule(new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null), PipeAccessRights.ReadWrite, AccessControlType.Allow));

            _namedPipeServer = new NamedPipeServerStream(NamedPipe.GetUserPipeName(pipeName), PipeDirection.In, 1, PipeTransmissionMode.Message,
                                                         PipeOptions.Asynchronous, 0, 0, pipeSecurity);

            AsyncCallback ac = null;

            ac = o =>
            {
                if (disposedValue)
                {
                    return;
                }
                NamedPipeServerStream server = (NamedPipeServerStream)o.AsyncState;
                try
                {
                    server.EndWaitForConnection(o);

                    object data = NamedPipe.ReadMessages(server, out IpcCommands command);
                    messageProcessor.ProcessMessages(command, data);
                    server.Disconnect();

                    server.BeginWaitForConnection(ac, server);
                }
                catch (Exception e)
                {
                    Logging.LogException(e);
                    RunReceivingServer(pipeName, messageProcessor);
                }
            };
            _namedPipeServer.BeginWaitForConnection(ac, _namedPipeServer);
        }
Beispiel #5
0
        public void RunPersistentPipeConnection(string pipeName, IMessageProcessor messageProcessor)
        {
            _persistentPipeServerStream = new NamedPipeServerStream(pipeName, PipeDirection.InOut, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous);

            AsyncCallback ac = null;
            ac = o =>
            {
                NamedPipeServerStream server = (NamedPipeServerStream)o.AsyncState;
                server.EndWaitForConnection(o);

                while (true)
                {
                    if (!messageProcessor.ProcessMessages(server)) break;
                }

                server.Dispose();
                server = new NamedPipeServerStream(pipeName, PipeDirection.InOut, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous);
                server.BeginWaitForConnection(ac, server);
            };
            _persistentPipeServerStream.BeginWaitForConnection(ac, _persistentPipeServerStream);
        }
Beispiel #6
0
        public void RunNamedPipeServer(string pipeName, IMessageProcessor messageProcessor)
        {
            _pipeServer = new NamedPipeServerStream(pipeName, PipeDirection.In, 1, PipeTransmissionMode.Message,
                PipeOptions.Asynchronous);

            AsyncCallback ac = null;
            ac = o =>
            {
                NamedPipeServerStream server = (NamedPipeServerStream)o.AsyncState;
                server.EndWaitForConnection(o);

                messageProcessor.ProcessMessages(server);
                server.Disconnect();

                server.BeginWaitForConnection(ac, server);

            };
            _pipeServer.BeginWaitForConnection(ac, _pipeServer);
        }