public static Guid Schedule(this IJobScheduler scheduler, Func <JobExecutionContext, Task> handler, OverlapHandling overlapHandling = OverlapHandling.Allow)
 {
     return(scheduler.Schedule("@immediately", async(context) =>
     {
         await handler(context);
     }, overlapHandling));
 }
Example #2
0
 public WinService(IJobScheduler jobScheduler)
 {
     ServiceStartupLogger.LogMessage("Started WinService.ctor");
     InitializeComponent();
     this.JobScheduler = jobScheduler;
     ServiceStartupLogger.LogMessage("Done WinService.ctor");
 }
Example #3
0
 public RemindMeService(DiscordSocketClient discord, IJobScheduler scheduler,
                        IRepository <Reminder> reminderRepository)
     : base(discord)
 {
     _reminderRepository        = reminderRepository;
     scheduler.EveryTenSeconds += AnnounceElapsedIntervalsAsync;
 }
Example #4
0
		public WinService(IJobScheduler jobScheduler)
		{
			ServiceStartupLogger.LogMessage("Started WinService.ctor");
			InitializeComponent();
			this.JobScheduler = jobScheduler;
			ServiceStartupLogger.LogMessage("Done WinService.ctor");
		}
Example #5
0
        public JobModule(ILogger logger, IJobScheduler jobScheduler) : base("/jobs")
        {
            this.RequiresClaims(claim => claim.Value.Equals("fabric/databus.queuejob", StringComparison.OrdinalIgnoreCase));

            Post("/", parameters =>
            {
                var body        = RequestStream.FromStream(Request.Body).AsString();
                var queryConfig = body.FromXml <Job>();

                var jobId = jobScheduler.ExecuteJobImmediately(queryConfig);

                var uriBuilder = new UriBuilder(Request.Url.Scheme, Request.Url.HostName,
                                                Request.Url.Port ?? 80, $"jobstatus/{jobId}");

                var statusUri = uriBuilder.ToString();

                var model = new
                {
                    JobId = jobId,
                    links = new[]
                    {
                        new
                        {
                            status = statusUri
                        }
                    }
                };

                return(Negotiate
                       .WithModel(model)
                       .WithStatusCode(HttpStatusCode.Accepted)
                       .WithHeader("Location", statusUri));
            });
        }
 public static Guid Schedule(this IJobScheduler scheduler, DateTime when, Func <JobExecutionContext, Task> handler, OverlapHandling overlapHandling = OverlapHandling.Allow)
 {
     return(scheduler.Schedule($"@once {when:O}", async(context) =>
     {
         await handler(context);
     }, overlapHandling));
 }
Example #7
0
        /// <summary>
        /// Schedule all of the recurring jobs.
        /// </summary>
        /// <param name="job"></param>
        public static void ScheduleJobs(IJobScheduler job)
        {
            //War prep started
            job.RecurringJob <WAR_Messages>("war1_prep_started", o => o.SendWarPrepStarted(1).Wait(), "0 0 7 * * ?");
            job.RecurringJob <WAR_Messages>("war2_prep_started", o => o.SendWarPrepStarted(2).Wait(), "0 0 13 * * ?");
            job.RecurringJob <WAR_Messages>("war3_prep_started", o => o.SendWarPrepStarted(3).Wait(), "0 0 19 * * ?");
            job.RecurringJob <WAR_Messages>("war4_prep_started", o => o.SendWarPrepStarted(4).Wait(), "0 0 1 * * ?");

            //War Prep Ending
            job.RecurringJob <WAR_Messages>("war1_prep_ending", o => o.SendWarPrepEnding(1).Wait(), "0 45 8 * * ?");
            job.RecurringJob <WAR_Messages>("war2_prep_ending", o => o.SendWarPrepEnding(2).Wait(), "0 45 14 * * ?");
            job.RecurringJob <WAR_Messages>("war3_prep_ending", o => o.SendWarPrepEnding(3).Wait(), "0 45 20 * * ?");
            job.RecurringJob <WAR_Messages>("war4_prep_ending", o => o.SendWarPrepEnding(4).Wait(), "0 45 2 * * ?");

            //War Started
            job.RecurringJob <WAR_Messages>("war1_started", o => o.SendWarStarted(1).Wait(), "0 0 9 * * ?");
            job.RecurringJob <WAR_Messages>("war2_started", o => o.SendWarStarted(2).Wait(), "0 0 15 * * ?");
            job.RecurringJob <WAR_Messages>("war3_started", o => o.SendWarStarted(3).Wait(), "0 0 21 * * ?");
            job.RecurringJob <WAR_Messages>("war4_started", o => o.SendWarStarted(4).Wait(), "0 0 3 * * ?");

            //Process reactions queue
            job.RecurringJob_EveryNSeconds <WARBOT>("process_reactions", o => o.ProcessReactions(), 15);

            //Send Portal Started
            job.RecurringJob <WAR_Messages>("portal_opened", o => o.SendPortalOpened().Wait(), "0 0 9 ? * FRI");

            //Update the Discord bot list every two hours.
            job.RecurringJob <WARBOT>("update_dbl", o => o.TaskBot.Update_DiscordBotList().Wait(), "0 0 */2 * * ?");

            //Update WarBOT's status every minute.
            job.RecurringJob <WARBOT>("update_status", o => o.TaskBot.Update_Status(null).Wait(), "0 0/1 * * * ? *");
        }
        public JobStatusModule(ILogger logger, IJobScheduler jobScheduler, IAppConfiguration configuration) : base("/jobstatus")
        {
            this.RequiresClaimsIfAuthorizationEnabled(configuration, claim => claim.Value.Equals("fabric/databus.queuejob", StringComparison.OrdinalIgnoreCase));

            Get("/", parameters =>
            {
                JobHistoryItem lastjob = jobScheduler.GetMostRecentJobs(1).FirstOrDefault();

                return(Negotiate
                       .WithModel(lastjob)
                       .WithView("ShowJobStatus"));
            });

            Get("/{jobName}", parameters =>
            {
                var jobName = parameters.jobName;
                if (Guid.TryParse(jobName, out Guid jobGuid))
                {
                    JobHistoryItem model = jobScheduler.GetJobStatus(jobGuid);

                    return(Negotiate
                           .WithModel(model)
                           .WithView("ShowJobStatus"));
                }

                return(jobScheduler.GetJobHistory(parameters.jobName));
            });
        }
Example #9
0
 /// <summary>
 /// Create client
 /// </summary>
 /// <param name="endpoints"></param>
 /// <param name="jobs"></param>
 /// <param name="serializer"></param>
 public PublisherJobClient(IEndpointRegistry endpoints, IJobScheduler jobs,
                           IJobSerializer serializer)
 {
     _serializer = serializer ?? throw new ArgumentNullException(nameof(serializer));
     _endpoints  = endpoints ?? throw new ArgumentNullException(nameof(endpoints));
     _jobs       = jobs ?? throw new ArgumentNullException(nameof(jobs));
 }
Example #10
0
 public ScheduleController(
     IScheduleReader reader,
     IJobScheduler scheduler)
 {
     _reader    = reader;
     _scheduler = scheduler;
 }
 public static Guid Schedule(this IJobScheduler scheduler, DateTime when, Func <Task> handler, OverlapHandling overlapHandling = OverlapHandling.Allow)
 {
     return(scheduler.Schedule(when, async(context) =>
     {
         await handler();
     }, overlapHandling));
 }
Example #12
0
        private void CreateScheduler()
        {
            lock (_startup)
            {
                if (_consumer != null)
                {
                    return;
                }
                _container = new JobSchedulerContainer(container =>
                                                       container.Register(() => _timeFactory, LifeStyles.Singleton));
                _scheduler = _container.CreateJobScheduler();
                _scheduler.Start();

                _consumerContainer = new SchedulerContainer();
                _consumerScheduler = _consumerContainer.CreateTaskScheduler();
                _taskFactory       = _consumerContainer.CreateTaskFactory(_consumerScheduler);

                _taskFactory = _consumerContainer.CreateTaskFactory(_consumerScheduler);
                _taskFactory.Scheduler.Configuration.MaximumThreads            = _configuration.ThreadsMax;
                _taskFactory.Scheduler.Configuration.MaxQueueSize              = _configuration.QueueMax;
                _taskFactory.Scheduler.Configuration.WaitForThreadPoolToFinish =
                    _configuration.WaitForThreadPoolToFinish;
                _taskFactory.Scheduler.Start();
                _queueContainer = new QueueContainer <MemoryMessageQueueInit>();
                _consumer       = _queueContainer.CreateConsumerMethodQueueScheduler(QueueName, Connection,
                                                                                     _taskFactory);
                _consumer.Start();
            }
        }
Example #13
0
 /// <summary>
 /// Create client
 /// </summary>
 /// <param name="endpoints"></param>
 /// <param name="jobs"></param>
 /// <param name="serializer"></param>
 /// <param name="config"></param>
 public PublisherJobService(IEndpointRegistry endpoints, IJobScheduler jobs,
                            IJobSerializer serializer, IPublishServicesConfig config)
 {
     _serializer = serializer ?? throw new ArgumentNullException(nameof(serializer));
     _endpoints  = endpoints ?? throw new ArgumentNullException(nameof(endpoints));
     _jobs       = jobs ?? throw new ArgumentNullException(nameof(jobs));
     _config     = config ?? throw new ArgumentNullException(nameof(config));
 }
Example #14
0
 public JobsController(IJobsRepo jobsRepo, IJobScheduler jobScheduler, ISendMessageToQueue sendMessageToQueue, IBuddiesRepo buddiesRepo, ITranslatorService translatorService)
 {
     _jobsRepo           = jobsRepo;
     _jobScheduler       = jobScheduler;
     _sendMessageToQueue = sendMessageToQueue;
     _buddiesRepo        = buddiesRepo;
     _translatorService  = translatorService;
 }
Example #15
0
 public ProcessAsyncEventsJobHandler(IAsyncEventWorker asyncEventWorker,
                                     IAsyncEventPipelineConfiguration asyncEventPipelineConfiguration,
                                     IJobScheduler jobScheduler)
 {
     this.asyncEventWorker = asyncEventWorker;
     this.asyncEventPipelineConfiguration = asyncEventPipelineConfiguration;
     this.jobScheduler = jobScheduler;
 }
Example #16
0
 public Handler(IJobScheduler jobScheduler, IDialogService dialogService, IAppContext context, ILogger logger, ContractResolver resolver)
 {
     _logger        = logger;
     _context       = context;
     _resolver      = resolver;
     _jobScheduler  = jobScheduler;
     _dialogService = dialogService;
 }
        public ProcessAsyncEventsJobHandlerTests()
        {
            asyncEventWorker = Substitute.For <IAsyncEventWorker>();
            jobScheduler     = Substitute.For <IJobScheduler>();
            asyncEventPipelineConfiguration = new AsyncEventPipelineConfiguration();

            sut = new ProcessAsyncEventsJobHandler(asyncEventWorker, asyncEventPipelineConfiguration, jobScheduler);
        }
        public NextWeekOutputFormsJob(IJobScheduler jobScheduler, int weeksForward) : base(jobScheduler)
        {
            if (weeksForward < 1)
            {
                throw new IndexOutOfRangeException(nameof(weeksForward));
            }

            WeeksForward = weeksForward;
        }
Example #19
0
 public Handler(IMediator mediator, ISystemTray sysTray, IDispatcher dispatcher, ITelemetry telemetry, ILogger logger, IJobScheduler jobScheduler)
 {
     _logger       = logger;
     _sysTray      = sysTray;
     _mediator     = mediator;
     _telemetry    = telemetry;
     _dispatcher   = dispatcher;
     _jobScheduler = jobScheduler;
 }
        public static Guid Schedule(this IJobScheduler scheduler, Action handler, OverlapHandling overlapHandling = OverlapHandling.Allow)
        {
            return(scheduler.Schedule((context) =>
            {
                handler();

                return Task.FromResult(0);
            }, overlapHandling));
        }
Example #21
0
 public ChannelRuleService(DiscordSocketClient discord, IJobScheduler scheduler,
                           ChannelRuleSettings config)
     : base(discord)
 {
     _discord        = discord;
     _jobScheduler   = scheduler;
     _discord.Ready -= InitializeServiceAsync;
     _discord.Ready += InitializeServiceAsync;
 }
Example #22
0
        public async Task <IJobScheduler> GetJobScheduler()
        {
            if (this.jobScheduler == null)
            {
                this.jobScheduler = await JobSchedulerFactory.Create("Server=tcp:schedulemate.database.windows.net,1433;Initial Catalog=Schedulemate;Persist Security Info=False;User ID=mbaio;Password=9n43r8@t/@,9V=3W;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;", SchedulerDataStore.AzureSQL).ConfigureAwait(false);
            }

            return(this.jobScheduler);
        }
        public static Guid Schedule(this IJobScheduler scheduler, DateTime when, Action <JobExecutionContext> handler, OverlapHandling overlapHandling = OverlapHandling.Allow)
        {
            return(scheduler.Schedule(when, (context) =>
            {
                handler(context);

                return Task.FromResult(0);
            }, overlapHandling));
        }
        public NextModifiedYearJob(IJobScheduler jobScheduler, int yearsCount) : base(jobScheduler)
        {
            if (yearsCount < 1)
            {
                throw new IndexOutOfRangeException(nameof(yearsCount));
            }

            YearsCount = yearsCount;
        }
Example #25
0
 public GiveawayService(DiscordSocketClient discord, IRepository <Giveaway> giveawayRepo,
                        Random rng, IJobScheduler jobScheduler, ILogger <GiveawayService> logger)
     : base(discord)
 {
     _giveawayRepo = giveawayRepo;
     _rng          = rng;
     _jobScheduler = jobScheduler;
     _logger       = logger;
 }
Example #26
0
 public CommandScheduler(
     IJobScheduler jobScheduler,
     ICommandDefinitionService commandDefinitionService,
     IJsonSerializer jsonSerializer)
 {
     _jobScheduler             = jobScheduler;
     _commandDefinitionService = commandDefinitionService;
     _jsonSerializer           = jsonSerializer;
 }
Example #27
0
        /// <summary>
        ///     Handles the Start event of the Application control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        protected void Application_Start(object sender, EventArgs e)
        {
            var modules =
                new IContainerModule[]
            {
                new AdContainerModule(),
                new CommonContainerModule(),
                new EnginesContainerModule(),
                new CommonPluginsContainerModule(),
                new PluginsContainerModule(),
                new RepositoryContainerModule(),
                new CoreContainerModule(),
                new QueryContainerModule(),
                new EnginesDslModule(),
                new InfrastructureContainerModule(),
                new UserInterfaceInfrastructureContainerModule(),
                new PackagesContainerModule(),
                new DbMigrationsModule(),
                new DbUpdateCommonModule(),
                new DbActionsModule(),
                new RequestHandlingModule(),
                new ReportContainerModule(),
                new RulesContainerModule(),
                new NotificationsContainerModule(),
                new WorkflowContainerModule(),
                new ScanWorkflowModule(),
                new SchedulerContainerModule(),
                new GitHubWorkflowContainerModule()
            };

            IoC.InitDefault(ReuseScope.PerRequest, modules);

            var globalContainer = IoC.GetContainer();

            var migrator = globalContainer.Resolve <IDbMigrator>();

            migrator.MigrationLatest();

            EnvironmentInitializer.Initialize(
                modules,
                ReuseScope.Container,
                container =>
            {
                var env = container.Resolve <IEnvironmentProvider>();

                env.Prepare();
            });

            _schedulerContainer = EnvironmentInitializer.InitializeContainer(modules, ReuseScope.Hierarchy);
            JobScheduler        = _schedulerContainer.Resolve <IJobScheduler>();
            JobScheduler.Start(true);

            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        }
        public NaosJobSchedulingEchoController(
            ILogger <NaosJobSchedulingEchoController> logger,
            IJobScheduler jobScheduler)
        {
            EnsureArg.IsNotNull(logger, nameof(logger));
            EnsureArg.IsNotNull(jobScheduler, nameof(jobScheduler));

            this.logger       = logger;
            this.jobScheduler = jobScheduler;
        }
Example #29
0
        public JobSchedulerHostedService(
            ILoggerFactory loggerFactory,
            IJobScheduler scheduler)
        {
            EnsureArg.IsNotNull(loggerFactory, nameof(loggerFactory));
            EnsureArg.IsNotNull(scheduler, nameof(scheduler));

            this.logger    = loggerFactory.CreateLogger <JobSchedulerHostedService>();
            this.scheduler = scheduler;
        }
Example #30
0
        public JobSchedulerTests()
        {
            _store       = Substitute.For <IBatchStore>();
            _dateService = Substitute.For <IDateService>();
            _scheduler   = new JobScheduler(_store, _dateService);

            _now = new DateTime(2018, 1, 2, 3, 4, 5);

            _dateService.GetNow().Returns(_now);
        }
Example #31
0
 public AsyncEventProcessor(Func <IAsyncEventWorker> asyncEventWorkerFunc,
                            IAsyncEventQueueManager asyncEventQueueManager,
                            IJobScheduler jobScheduler,
                            IAsyncEventPipelineConfiguration asyncEventPipelineConfiguration)
 {
     this.asyncEventWorkerFunc            = asyncEventWorkerFunc;
     this.asyncEventQueueManager          = asyncEventQueueManager;
     this.jobScheduler                    = jobScheduler;
     this.asyncEventPipelineConfiguration = asyncEventPipelineConfiguration;
 }
Example #32
0
        public BuildMonitor(IJobScheduler jobScheduler, ILog log)
        {
            if (jobScheduler == null)
            {
                throw new ArgumentNullException("jobScheduler");
            }
            if (log == null)
            {
                throw new ArgumentNullException("log");
            }

            this.jobScheduler = jobScheduler;
            this.log = log;
        }
Example #33
0
        public JobManager(
            [Dependency]
            IJobScheduler scheduler)
        {
            this.scheduler = scheduler;
            var operationContext = OperationContext.Current;
            operationContext.GetCallbackChannel<Dto.IJobManagerCallback>();
            //var clientEndpoint = operationContext.IncomingMessageProperties[RemoteEndpointMessageProperty.Name]
            //                                  as RemoteEndpointMessageProperty;
            //remoteAddress = string.Format(
            //    "{0}:{1}",
            //    clientEndpoint.Address, clientEndpoint.Port);

            operationContext.Channel.Closed += OnChannelClosed;
            operationContext.Channel.Closing += OnChannelClosing;
        }
Example #34
0
 private void SetUpJobs()
 {
     var jobs = GetJobsForMu();
     _jobScheduler = new MonitoringJobScheduler();
     _jobScheduler.Initialize(jobs);
 }
Example #35
0
		public WinService(IJobScheduler jobScheduler)
		{
			InitializeComponent();
			_jobScheduler = DIHelper.VerifyParameter(jobScheduler);
		}