private static bool AreGeneratorsRunning(OnionGenerator[] generators) { foreach (OnionGenerator o in generators) { if (o != null && o.Running) { return true; } } return false; }
private static OnionGenerator[] PrepareGenerators(Settings settings, IAppender appender) { OnionGenerator[] generators = new OnionGenerator[settings.WorkerCount]; for (int i = 0; i < generators.Length; ++i) { generators[i] = new OnionGenerator { OnionPattern = settings.ToMatch, PickDirectory = PickOutputDirectory, GenerateMax = settings.MaxGenerate, MatchMax = settings.MaxMatch, }; generators[i].OnionAppender.AddAppender(appender); } return(generators); }
private static void WaitForSignal(OnionGenerator[] generators) { using (UnixSignal term = new UnixSignal(Signum.SIGTERM)) using (UnixSignal ctlc = new UnixSignal(Signum.SIGINT)) using (UnixSignal hup = new UnixSignal(Signum.SIGHUP)) { UnixSignal[] signals = new UnixSignal[] { term, ctlc, hup }; while (AreGeneratorsRunning(generators)) { int retVal = UnixSignal.WaitAny(signals, 100); if (retVal != CHECK_INTERVAL) { Log.InfoFormat("Received signal {0}, exiting", signals[retVal].Signum); break; } } } }
private static void TerminateAllGenerators(OnionGenerator[] generators) { Log.Info("Stopping onion address generation"); if (generators != null) { Log.Debug("Sending stop command to workers"); foreach (OnionGenerator o in generators) { if (o != null) { o.Stop(); } } Log.Debug("Sent stop command to workers"); Log.Debug("Waiting for workers to stop"); while (AreGeneratorsRunning(generators)) { Thread.Sleep(0); } Log.Debug("Workers stopped"); } Log.Debug("Stopped onion address generation"); }
private static OnionGenerator[] PrepareGenerators(Settings settings, IAppender appender) { OnionGenerator[] generators = new OnionGenerator[settings.WorkerCount]; for (int i = 0; i < generators.Length; ++i) { generators[i] = new OnionGenerator { OnionPattern = settings.ToMatch, PickDirectory = PickOutputDirectory, GenerateMax = settings.MaxGenerate, MatchMax = settings.MaxMatch, }; generators[i].OnionAppender.AddAppender(appender); } return generators; }
private static void NonPosixWait(OnionGenerator[] generators) { while (AreGeneratorsRunning(generators)) { Thread.Sleep(100); } }