public void Start(string pipeName)
{
_pipeName = pipeName;
var security = new PipeSecurity();
var sid = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
security.AddAccessRule(new PipeAccessRule(sid, PipeAccessRights.FullControl, AccessControlType.Allow));
_pipeServer = new NamedPipeServerStream(_pipeName, PipeDirection.In, 254,
PipeTransmissionMode.Byte, PipeOptions.Asynchronous, 4096, 4096, security);
_pipeServer.BeginWaitForConnection(WaitForConnectionCallBack, _pipeServer);
_logger.Info("Opened named pipe '{0}'", _pipeName);
_closed = false;
}
public MainManager(ILogger logger, LoopManager loopManager, DeviceManager deviceManager, EffectManager effectManager, ProfileManager profileManager, PipeServer pipeServer) { Logger = logger; LoopManager = loopManager; DeviceManager = deviceManager; EffectManager = effectManager; ProfileManager = profileManager; PipeServer = pipeServer; _processTimer = new Timer(1000); _processTimer.Elapsed += ScanProcesses; _processTimer.Start(); ProgramEnabled = false; Running = false; // Create and start the web server GameStateWebServer = new GameStateWebServer(logger); GameStateWebServer.Start(); // Start the named pipe PipeServer.Start("artemis"); // Start the update task var updateTask = new Task(Updater.UpdateApp); updateTask.Start(); Logger.Info("Intialized MainManager"); Logger.Info($"Artemis version {Assembly.GetExecutingAssembly().GetName().Version} is ready!"); }