/// <summary> /// Not Aspect Wrapped /// </summary> protected static TWorker EnsureWorker <TWorker>(IFoundation foundation, string workerName, int millisecondInterval = 5000) where TWorker : WorkerBase <TRequest> { IDaemonManager daemonManager = foundation.GetDaemonManager(); IDaemonTask daemonTask = daemonManager.GetRegisteredDaemonTask(workerName); if (daemonTask == null) { lock (_RegistrationLock) { daemonTask = daemonManager.GetRegisteredDaemonTask(workerName); if (daemonTask == null) { if (millisecondInterval <= 1000) { millisecondInterval = 5000; // if you give bad data, we force to 5 seconds. } DaemonConfig config = new DaemonConfig() { InstanceName = workerName, ContinueOnError = true, IntervalMilliSeconds = millisecondInterval, StartDelayMilliSeconds = 0, TaskConfiguration = string.Empty }; TWorker worker = (TWorker)foundation.Container.Resolve(typeof(TWorker), null); daemonManager.RegisterDaemon(config, worker, true); } } daemonTask = daemonManager.GetRegisteredDaemonTask(workerName); } return(daemonTask as TWorker); }
public override void OnAfterBootStrapComplete(IFoundation foundation) { base.OnAfterBootStrapComplete(foundation); // Replace Exception Handlers foundation.Container.RegisterType <IHandleException, HealthFriendlyExceptionHandler>(new ContainerControlledLifetimeManager()); foundation.Container.RegisterType <IHandleExceptionProvider, HealthFriendlyExceptionHandlerProvider>(new ContainerControlledLifetimeManager()); foundation.Container.RegisterInstance <HealthFriendlyExceptionHandlerProvider>(new HealthFriendlyExceptionHandlerProvider(foundation, foundation.GetLogger()), new ContainerControlledLifetimeManager()); foundation.Container.RegisterType <IHandleException, HealthSwallowExceptionHandler>(Assumptions.SWALLOWED_EXCEPTION_HANDLER, new ContainerControlledLifetimeManager()); foundation.Container.RegisterType <IHandleExceptionProvider, HealthSwallowExceptionHandlerProvider>(Assumptions.SWALLOWED_EXCEPTION_HANDLER, new ContainerControlledLifetimeManager()); foundation.Container.RegisterInstance <HealthSwallowExceptionHandlerProvider>(Assumptions.SWALLOWED_EXCEPTION_HANDLER, new HealthSwallowExceptionHandlerProvider(foundation, foundation.GetLogger()), new ContainerControlledLifetimeManager()); foundation.Container.RegisterInstance <ServerHealthExtractor>(new ServerHealthExtractor(foundation), new ContainerControlledLifetimeManager()); DaemonConfig healthConfig = new DaemonConfig() { InstanceName = HealthReportDaemon.DAEMON_NAME, ContinueOnError = true, IntervalMilliSeconds = 15 * 1000, // every 15 seconds StartDelayMilliSeconds = 60 * 1000, TaskConfiguration = string.Empty }; foundation.GetDaemonManager().RegisterDaemon(healthConfig, new HealthReportDaemon(foundation), true); }
/// <summary> /// Not aspect wrapped /// </summary> public static string ProcessAgitateWebHook(IFoundation foundation, string secretkey, string daemonName) { string result = ""; if (secretkey == "codeable") { IDaemonManager daemonManager = foundation.GetDaemonManager(); if (null != daemonManager.GetRegisteredDaemonTask(daemonName)) { daemonManager.StartDaemon(daemonName); result = "Agitated"; } } return(result); }
/// <summary> /// Not aspect wrapped /// </summary> public static string ProcessWebHook(IFoundation foundation, string secretkey, string hookType, string entityType, string argument) { string result = ""; if (secretkey == "codeable") { IDaemonManager daemonManager = foundation.GetDaemonManager(); switch (hookType) { case "sync": case "failed": daemonManager.StartDaemon(string.Format(ElasticSearchDaemon.DAEMON_NAME_FORMAT, Agents.AGENT_DEFAULT)); daemonManager.StartDaemon(string.Format(ElasticSearchDaemon.DAEMON_NAME_FORMAT, Agents.AGENT_STATS)); result = "Queued Normal Sync"; break; default: break; } } return(result); }