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); }
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); }
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); }
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); }