/// <summary> /// Construct a <see cref="RepositoryController"/> /// </summary> /// <param name="databaseContext">The <see cref="IDatabaseContext"/> for the <see cref="ApiController"/></param> /// <param name="authenticationContextFactory">The <see cref="IAuthenticationContextFactory"/> for the <see cref="ApiController"/></param> /// <param name="instanceManager">The value of <see cref="instanceManager"/></param> /// <param name="gitHubClientFactory">The value of <see cref="gitHubClientFactory"/></param> /// <param name="jobManager">The value of <see cref="jobManager"/></param> /// <param name="logger">The <see cref="ILogger"/> for the <see cref="ApiController"/></param> /// <param name="generalConfigurationOptions">The <see cref="IOptions{TOptions}"/> containing value of <see cref="generalConfiguration"/></param> public RepositoryController(IDatabaseContext databaseContext, IAuthenticationContextFactory authenticationContextFactory, IInstanceManager instanceManager, IGitHubClientFactory gitHubClientFactory, IJobManager jobManager, ILogger <RepositoryController> logger, IOptions <GeneralConfiguration> generalConfigurationOptions) : base(databaseContext, authenticationContextFactory, logger, true, true) { this.instanceManager = instanceManager ?? throw new ArgumentNullException(nameof(instanceManager)); this.gitHubClientFactory = gitHubClientFactory ?? throw new ArgumentNullException(nameof(gitHubClientFactory)); this.jobManager = jobManager ?? throw new ArgumentNullException(nameof(jobManager)); generalConfiguration = generalConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(generalConfigurationOptions)); }
/// <summary>Run the specified job.</summary> /// <param name="job">The job to run.</param> /// <param name="jobManager">The job manager owning the job.</param> private void RunActualJob(IRunnable job, IJobManager jobManager) { try { if (!(job is JobRunnerSleepJob)) { SimsRunning.Add(job); } var startTime = DateTime.Now; Exception error = null; try { // Run job. job.Run(cancelToken); } catch (Exception err) { error = err; } // Signal to JobManager the job has finished. InvokeJobCompleted(job, jobManager, startTime, error); if (!(job is JobRunnerSleepJob)) { SimsRunning.Remove(job); } } finally { Interlocked.Decrement(ref numberJobsRunning); } }
private void InitManagers() { //try //{ var storage = _objectFactory.GetStorage(Storages.Redis, Config); _minerManager = _objectFactory.GetMinerManager(Config, _daemonClient); var jobTracker = _objectFactory.GetJobTracker(); var blockProcessor = _objectFactory.GetBlockProcessor(Config, _daemonClient); _shareManager = _objectFactory.GetShareManager(Config, _daemonClient, jobTracker, storage, blockProcessor); var vardiffManager = _objectFactory.GetVardiffManager(Config, _shareManager); _banningManager = _objectFactory.GetBanManager(Config, _shareManager); _jobManager = _objectFactory.GetJobManager(Config, _daemonClient, jobTracker, _shareManager, _minerManager, _hashAlgorithm); _jobManager.Initialize(InstanceId); var paymentProcessor = _objectFactory.GetPaymentProcessor(Config, _daemonClient, storage, blockProcessor); paymentProcessor.Initialize(Config.Payments); var latestBlocks = _objectFactory.GetLatestBlocks(storage); var blockStats = _objectFactory.GetBlockStats(latestBlocks, storage); Statistics = _objectFactory.GetPerPoolStats(Config, _daemonClient, _minerManager, _hashAlgorithm, blockStats, storage); //} //catch (Exception e) //{ // _logger.Error("Pool initialization error: {0:l}", e.Message); //} }
public VanillaServer(IPool pool, IMinerManager minerManager, IJobManager jobManager, ICoinConfig coinConfig) { _pool = pool; _minerManager = minerManager; _jobManager = jobManager; _logger = Log.ForContext<VanillaServer>().ForContext("Component", coinConfig.Name); }
private void InitManagers() { try { AccountManager = _objectFactory.GetAccountManager(_storage, Config); BlockRepository = _objectFactory.GetBlockRepository(_storage); PaymentRepository = _objectFactory.GetPaymentRepository(_storage); MinerManager = _objectFactory.GetMinerManager(Config, _storage, AccountManager); var jobTracker = _objectFactory.GetJobTracker(Config); _shareManager = _objectFactory.GetShareManager(Config, Daemon, jobTracker, _storage); _objectFactory.GetVardiffManager(Config, _shareManager); _banningManager = _objectFactory.GetBanManager(Config, _shareManager); _jobManager = _objectFactory.GetJobManager(Config, Daemon, jobTracker, _shareManager, MinerManager, HashAlgorithm); _jobManager.Initialize(InstanceId); var blockProcessor = _objectFactory.GetBlockProcessor(Config, Daemon, _storage); var blockAccounter = _objectFactory.GetBlockAccounter(Config, _storage, AccountManager); var paymentProcessor = _objectFactory.GetPaymentProcessor(Config, _storage, Daemon, AccountManager); _objectFactory.GetPaymentManager(Config, blockProcessor, blockAccounter, paymentProcessor); ProfitInfo = _objectFactory.GetProfitInfo(NetworkInfo, Config); } catch (Exception e) { _logger.Error("Pool initialization error: {0:l}", e.Message); } }
public async Task WaitInt_WasRunningTooLong_WaitsAndReturnsNull() { // Arrange using IJobManager jobManager = TestHelper.CreateJobManager(true); var start = "2000-01-01Z".ToUtcDateOffset(); var timeMachine = ShiftedTimeProvider.CreateTimeMachine(start); TimeProvider.Override(timeMachine); var job = jobManager.Create("my-job"); job.IsEnabled = true; job.Routine = async(parameter, tracker, output, token) => { await output.WriteAsync("Hello!"); await Task.Delay(TimeSpan.FromHours(1), token); }; job.ForceStart(); // Act await timeMachine.WaitUntilSecondsElapse(start, 1.0); var gotSignal = job.Wait(1000); // Assert Assert.That(gotSignal, Is.Null); }
public override void Execute( Japi.Job job, Action<string> updateStatus, IRepository repositoryService, IJobManager jobManager) { var tasks = (from t in job.Tasks select new { Task = t, Dependencies = t.Dependencies.Count }).ToList(); while(tasks.Count() > 0) { var task = (from t in tasks where t.Dependencies == 0 select t.Task).First(); updateStatus(string.Format("Creating task \"{0}\"...", task.Name)); tasks = (from t in tasks where t.Task != task let dependencyList = t.Task.Dependencies let dependencyCount = t.Dependencies select new { Task = t.Task, Dependencies = dependencyList.Contains(task) ? dependencyCount - 1 : dependencyCount }).ToList(); task.Id = jobManager.CreateTask(task.ToContract()); } }
public override void Execute( Job job, Action<string> updateStatus, IRepository repositoryService, IJobManager jobManager) { foreach(var file in job.Files.OfType<CreateFile>()) { updateStatus(string.Format("Downloading file: \"{0}\"...", file.Name)); using(var stream = repositoryService.Download(file.Link.Id)) { using(var fstream = new FileStream( Path.Combine(Directory.GetCurrentDirectory(), string.Format("{0}.data", file.Name)), FileMode.Create)) { var buff = new byte[256]; while(true) { var isCompleted = stream.Read(buff, 0, buff.Length) < buff.Length; fstream.Write(buff, 0, buff.Length); if(isCompleted) break; } } } } }
public void Initialize() { var actualToken = Environment.GetEnvironmentVariable("TGS4_TEST_DISCORD_TOKEN"); if (!String.IsNullOrWhiteSpace(actualToken)) { testToken1 = new ChatBot { ConnectionString = actualToken, ReconnectionInterval = 1 } } ; var mockSetup = new Mock <IJobManager>(); mockSetup .Setup(x => x.RegisterOperation(It.IsNotNull <Job>(), It.IsNotNull <JobEntrypoint>(), It.IsAny <CancellationToken>())) .Callback <Job, JobEntrypoint, CancellationToken>((job, entrypoint, cancellationToken) => job.StartedBy ??= new User { }) .Returns(Task.CompletedTask); mockSetup .Setup(x => x.WaitForJobCompletion(It.IsNotNull <Job>(), It.IsAny <User>(), It.IsAny <CancellationToken>(), It.IsAny <CancellationToken>())) .Returns(Task.CompletedTask); mockJobManager = mockSetup.Object; }
public void WaitInt_NotRunning_ReturnsCompletedImmediately() { // Arrange using IJobManager jobManager = TestHelper.CreateJobManager(true); var start = "2000-01-01Z".ToUtcDateOffset(); var timeMachine = ShiftedTimeProvider.CreateTimeMachine(start); TimeProvider.Override(timeMachine); var job = jobManager.Create("my-job"); job.Routine = async(parameter, tracker, output, token) => { await output.WriteAsync("Hello!"); await Task.Delay(TimeSpan.FromSeconds(0.5), token); }; // Act var waitResult = job.Wait(10); // Assert Assert.That(waitResult, Is.EqualTo(JobRunStatus.Completed)); }
public void WaitInt_JobIsDisposed_ThrowsJobObjectDisposedException() { // Arrange using IJobManager jobManager = TestHelper.CreateJobManager(true); var start = "2000-01-01Z".ToUtcDateOffset(); var timeMachine = ShiftedTimeProvider.CreateTimeMachine(start); TimeProvider.Override(timeMachine); var job = jobManager.Create("my-job"); job.Routine = async(parameter, tracker, output, token) => { await output.WriteAsync("Hello!"); await Task.Delay(TimeSpan.FromSeconds(0.5), token); }; job.IsEnabled = true; job.Schedule = new SimpleSchedule(SimpleScheduleKind.Second, 1, start); job.Dispose(); // Act var ex = Assert.Throws <JobObjectDisposedException>(() => job.Wait(10)); // Assert Assert.That(ex, Has.Message.EqualTo("'my-job' is disposed.")); }
/// <summary> /// JobsController constructor /// </summary> /// <param name="repository"></param> /// <param name="membershipManager"></param> /// <param name="userManager"></param> /// <param name="jobManager"></param> /// <param name="hub"></param> /// <param name="configuration"></param> /// <param name="httpContextAccessor"></param> /// <param name="jobCheckpointRepository"></param> /// <param name="jobParameterRepository"></param> /// <param name="automationRepository"></param> /// <param name="automationVersionRepo"></param> /// <param name="webhookPublisher"></param> public JobsController( IJobRepository repository, IAutomationRepository automationRepository, IJobParameterRepository jobParameterRepository, IJobCheckpointRepository jobCheckpointRepository, IMembershipManager membershipManager, ApplicationIdentityUserManager userManager, IJobManager jobManager, IHubContext <NotificationHub> hub, IConfiguration configuration, IHttpContextAccessor httpContextAccessor, IAutomationVersionRepository automationVersionRepo, IWebhookPublisher webhookPublisher) : base(repository, userManager, httpContextAccessor, membershipManager, configuration) { this.jobManager = jobManager; this.jobParameterRepo = jobParameterRepository; this.automationRepo = automationRepository; this.jobCheckpointRepo = jobCheckpointRepository; this.jobManager.SetContext(base.SecurityContext); this.repository = repository; _hub = hub; this.automationVersionRepo = automationVersionRepo; this.webhookPublisher = webhookPublisher; }
public HttpTransferManager(AndroidContext context, IJobManager jobManager, IMessageBus messageBus, IRepository repository) : base(jobManager, messageBus, repository) { this.context = context; }
public async Task WaitInt_WasRunningThenFaulted_WaitsAndReturnsFaulted() { // Arrange using IJobManager jobManager = TestHelper.CreateJobManager(true); var start = "2000-01-01Z".ToUtcDateOffset(); var timeMachine = ShiftedTimeProvider.CreateTimeMachine(start); TimeProvider.Override(timeMachine); var job = jobManager.Create("my-job"); job.IsEnabled = true; job.Routine = async(parameter, tracker, output, token) => { await Task.Delay(500, token); throw new AbandonedMutexException("Hello there!"); }; // Act job.ForceStart(); var waitResult = job.Wait(1000); await Task.Delay(50); // let job run get written. // Assert Assert.That(waitResult, Is.EqualTo(JobRunStatus.Faulted)); Assert.That(job.GetInfo(null).Runs.Single().Exception, Is.TypeOf <AbandonedMutexException>()); }
/// <summary> /// Construct an <see cref="Instance"/> /// </summary> /// <param name="metadata">The value of <see cref="metadata"/></param> /// <param name="repositoryManager">The value of <see cref="RepositoryManager"/></param> /// <param name="byondManager">The value of <see cref="ByondManager"/></param> /// <param name="dreamMaker">The value of <see cref="DreamMaker"/></param> /// <param name="watchdog">The value of <see cref="Watchdog"/></param> /// <param name="chat">The value of <see cref="Chat"/></param> /// <param name="configuration">The value of <see cref="Configuration"/></param> /// <param name="dmbFactory">The value of <see cref="dmbFactory"/></param> /// <param name="jobManager">The value of <see cref="jobManager"/></param> /// <param name="eventConsumer">The value of <see cref="eventConsumer"/></param> /// <param name="remoteDeploymentManagerFactory">The value of <see cref="remoteDeploymentManagerFactory"/>.</param> /// <param name="logger">The value of <see cref="logger"/></param> public Instance( Api.Models.Instance metadata, IRepositoryManager repositoryManager, IByondManager byondManager, IDreamMaker dreamMaker, IWatchdog watchdog, IChatManager chat, StaticFiles.IConfiguration configuration, IDmbFactory dmbFactory, IJobManager jobManager, IEventConsumer eventConsumer, IRemoteDeploymentManagerFactory remoteDeploymentManagerFactory, ILogger <Instance> logger) { this.metadata = metadata ?? throw new ArgumentNullException(nameof(metadata)); RepositoryManager = repositoryManager ?? throw new ArgumentNullException(nameof(repositoryManager)); ByondManager = byondManager ?? throw new ArgumentNullException(nameof(byondManager)); DreamMaker = dreamMaker ?? throw new ArgumentNullException(nameof(dreamMaker)); Watchdog = watchdog ?? throw new ArgumentNullException(nameof(watchdog)); Chat = chat ?? throw new ArgumentNullException(nameof(chat)); Configuration = configuration ?? throw new ArgumentNullException(nameof(configuration)); this.dmbFactory = dmbFactory ?? throw new ArgumentNullException(nameof(dmbFactory)); this.jobManager = jobManager ?? throw new ArgumentNullException(nameof(jobManager)); this.eventConsumer = eventConsumer ?? throw new ArgumentNullException(nameof(eventConsumer)); this.remoteDeploymentManagerFactory = remoteDeploymentManagerFactory ?? throw new ArgumentNullException(nameof(remoteDeploymentManagerFactory)); this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); timerLock = new object(); }
/// <summary> /// Initializes a new instance of the <see cref="BasicWatchdog"/> <see langword="class"/>. /// </summary> /// <param name="chat">The <see cref="IChatManager"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="sessionControllerFactory">The <see cref="ISessionControllerFactory"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="dmbFactory">The <see cref="IDmbFactory"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="reattachInfoHandler">The <see cref="IReattachInfoHandler"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="databaseContextFactory">The <see cref="IDatabaseContextFactory"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="jobManager">The <see cref="IJobManager"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="serverControl">The <see cref="IServerControl"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="asyncDelayer">The <see cref="IAsyncDelayer"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="logger">The <see cref="ILogger"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="initialLaunchParameters">The <see cref="DreamDaemonLaunchParameters"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="instance">The <see cref="Api.Models.Instance"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="autoStart">The autostart value for the <see cref="WatchdogBase"/>.</param> public BasicWatchdog( IChatManager chat, ISessionControllerFactory sessionControllerFactory, IDmbFactory dmbFactory, IReattachInfoHandler reattachInfoHandler, IDatabaseContextFactory databaseContextFactory, IJobManager jobManager, IServerControl serverControl, IAsyncDelayer asyncDelayer, ILogger <BasicWatchdog> logger, DreamDaemonLaunchParameters initialLaunchParameters, Api.Models.Instance instance, bool autoStart) : base( chat, sessionControllerFactory, dmbFactory, reattachInfoHandler, databaseContextFactory, jobManager, serverControl, asyncDelayer, logger, initialLaunchParameters, instance, autoStart) { }
public void WaitInt_NegativeArgument_ThrowsArgumentOutOfRangeException() { // Arrange using IJobManager jobManager = TestHelper.CreateJobManager(true); var start = "2000-01-01Z".ToUtcDateOffset(); var timeMachine = ShiftedTimeProvider.CreateTimeMachine(start); TimeProvider.Override(timeMachine); var job = jobManager.Create("my-job"); job.Routine = async(parameter, tracker, output, token) => { await output.WriteAsync("Hello!"); await Task.Delay(TimeSpan.FromSeconds(0.5), token); }; job.IsEnabled = true; job.Schedule = new SimpleSchedule(SimpleScheduleKind.Second, 1, start); // Act var ex = Assert.Throws <ArgumentOutOfRangeException>(() => job.Wait(-1)); // Assert Assert.That(ex.ParamName, Is.EqualTo("millisecondsTimeout")); }
public override void InternalExecute(int maxThreads) { try { Logger.WriteToLog("Processing genome '{0}' with {1} threads", Genome.Directory, maxThreads); Initialize(); // if throttling, clip max threads to number of work request so we don't have idle threads if (ShouldThrottle) { maxThreads = Math.Min(maxThreads, WorkRequests.Count); } JobManager = new JobManager(maxThreads); var jobs = new List <IJob>(); foreach (var workRequest in WorkRequests) { _remainingChrByBam.Add(workRequest, new List <string>()); } // break out work by chr and bam. make sure to lump chr work together foreach (var chrName in Genome.ChromosomesToProcess) { var chrWork = new List <BamWorkRequest>(); foreach (var workRequest in WorkRequests) { chrWork.Add(workRequest); jobs.Add(new GenericJob(() => ProcessByBam(workRequest, chrName), workRequest.BamFileName + "_" + chrName)); _remainingChrByBam[workRequest].Add(chrName); } _remainingWorkByChr.Add(chrName, chrWork); } // set up throttle signals if (ShouldThrottle) { InitThrottleSignals(WorkRequests); } if (maxThreads > 1) { JobManager.Process(jobs); // process all jobs } else { foreach (var job in jobs) { job.Execute(); } } } finally { Finish(); } }
protected internal override void UpdateSuspensionState(CommandContext commandContext, ISuspensionState suspensionState) { IJobDefinitionManager jobDefinitionManager = commandContext.JobDefinitionManager; IJobManager jobManager = commandContext.JobManager; if (!string.IsNullOrEmpty(JobDefinitionId)) { jobDefinitionManager.UpdateJobDefinitionSuspensionStateById(JobDefinitionId, suspensionState); } else if (!string.IsNullOrEmpty(ProcessDefinitionId)) { jobDefinitionManager.UpdateJobDefinitionSuspensionStateByProcessDefinitionId(ProcessDefinitionId, suspensionState); jobManager.UpdateStartTimerJobSuspensionStateByProcessDefinitionId(ProcessDefinitionId, suspensionState); } else if (!string.IsNullOrEmpty(ProcessDefinitionKey)) { if (!IsProcessDefinitionTenantIdSet) { jobDefinitionManager.UpdateJobDefinitionSuspensionStateByProcessDefinitionKey(ProcessDefinitionKey, suspensionState); jobManager.UpdateStartTimerJobSuspensionStateByProcessDefinitionKey(ProcessDefinitionKey, suspensionState); } else { jobDefinitionManager.UpdateJobDefinitionSuspensionStateByProcessDefinitionKeyAndTenantId(ProcessDefinitionKey, ProcessDefinitionTenantId, suspensionState); jobManager.UpdateStartTimerJobSuspensionStateByProcessDefinitionKeyAndTenantId(ProcessDefinitionKey, ProcessDefinitionTenantId, suspensionState); } } }
/// <summary> /// Construct an <see cref="Instance"/> /// </summary> /// <param name="metadata">The value of <see cref="metadata"/></param> /// <param name="repositoryManager">The value of <see cref="RepositoryManager"/></param> /// <param name="byondManager">The value of <see cref="ByondManager"/></param> /// <param name="dreamMaker">The value of <see cref="dreamMaker"/></param> /// <param name="watchdog">The value of <see cref="Watchdog"/></param> /// <param name="chat">The value of <see cref="Chat"/></param> /// <param name="configuration">The value of <see cref="Configuration"/></param> /// <param name="compileJobConsumer">The value of <see cref="compileJobConsumer"/></param> /// <param name="databaseContextFactory">The value of <see cref="databaseContextFactory"/></param> /// <param name="dmbFactory">The value of <see cref="dmbFactory"/></param> /// <param name="jobManager">The value of <see cref="jobManager"/></param> /// <param name="eventConsumer">The value of <see cref="eventConsumer"/></param> /// <param name="gitHubClientFactory">The value of <see cref="gitHubClientFactory"/></param> /// <param name="logger">The value of <see cref="logger"/></param> public Instance( Api.Models.Instance metadata, IRepositoryManager repositoryManager, IByondManager byondManager, IDreamMaker dreamMaker, IWatchdog watchdog, IChat chat, StaticFiles.IConfiguration configuration, ICompileJobConsumer compileJobConsumer, IDatabaseContextFactory databaseContextFactory, IDmbFactory dmbFactory, IJobManager jobManager, IEventConsumer eventConsumer, IGitHubClientFactory gitHubClientFactory, ILogger <Instance> logger) { this.metadata = metadata ?? throw new ArgumentNullException(nameof(metadata)); RepositoryManager = repositoryManager ?? throw new ArgumentNullException(nameof(repositoryManager)); ByondManager = byondManager ?? throw new ArgumentNullException(nameof(byondManager)); this.dreamMaker = dreamMaker ?? throw new ArgumentNullException(nameof(dreamMaker)); Watchdog = watchdog ?? throw new ArgumentNullException(nameof(watchdog)); Chat = chat ?? throw new ArgumentNullException(nameof(chat)); Configuration = configuration ?? throw new ArgumentNullException(nameof(configuration)); this.compileJobConsumer = compileJobConsumer ?? throw new ArgumentNullException(nameof(compileJobConsumer)); this.databaseContextFactory = databaseContextFactory ?? throw new ArgumentNullException(nameof(databaseContextFactory)); this.dmbFactory = dmbFactory ?? throw new ArgumentNullException(nameof(dmbFactory)); this.jobManager = jobManager ?? throw new ArgumentNullException(nameof(jobManager)); this.eventConsumer = eventConsumer ?? throw new ArgumentNullException(nameof(eventConsumer)); this.gitHubClientFactory = gitHubClientFactory ?? throw new ArgumentNullException(nameof(gitHubClientFactory)); this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
public void Cancel_NotRunning_ReturnsFalse() { // Arrange using IJobManager jobManager = TestHelper.CreateJobManager(true); var start = "2000-01-01Z".ToUtcDateOffset(); var timeMachine = ShiftedTimeProvider.CreateTimeMachine(start); TimeProvider.Override(timeMachine); var job = jobManager.Create("my-job"); job.IsEnabled = true; // Act var canceled = job.Cancel(); // Assert Assert.That(canceled, Is.False); var info = job.GetInfo(null); Assert.That(info.CurrentRun, Is.Null); Assert.That(info.NextDueTime, Is.EqualTo(TestHelper.NeverCopy)); Assert.That(info.NextDueTimeIsOverridden, Is.False); Assert.That(info.RunCount, Is.Zero); Assert.That(info.Runs, Is.Empty); }
public JobScheduler(IJobManager jobManager, IScheduler scheduler, IEventReporter eventReporter, ITypeLoader typeLoader) { this.JobManager = jobManager; this.Scheduler = scheduler; this.EventReporter = eventReporter; this.TypeLoader = typeLoader; }
/// <summary> /// Initializes a new instance of the <see cref="InstanceManager"/> class. /// </summary> /// <param name="instanceFactory">The value of <see cref="instanceFactory"/>.</param> /// <param name="ioManager">The value of <paramref name="ioManager"/>.</param> /// <param name="databaseContextFactory">The value of <paramref name="databaseContextFactory"/>.</param> /// <param name="assemblyInformationProvider">The value of <see cref="assemblyInformationProvider"/>.</param> /// <param name="jobManager">The value of <see cref="jobManager"/>.</param> /// <param name="serverControl">The value of <see cref="serverControl"/>.</param> /// <param name="systemIdentityFactory">The value of <see cref="systemIdentityFactory"/>.</param> /// <param name="asyncDelayer">The value of <see cref="asyncDelayer"/>.</param> /// <param name="serverPortProvider">The value of <see cref="serverPortProvider"/>.</param> /// <param name="swarmService">The value of <see cref="swarmService"/>.</param> /// <param name="generalConfigurationOptions">The <see cref="IOptions{TOptions}"/> containing the value of <see cref="generalConfiguration"/>.</param> /// <param name="swarmConfigurationOptions">The <see cref="IOptions{TOptions}"/> containing the value of <see cref="swarmConfiguration"/>.</param> /// <param name="logger">The value of <see cref="logger"/>.</param> public InstanceManager( IInstanceFactory instanceFactory, IIOManager ioManager, IDatabaseContextFactory databaseContextFactory, IAssemblyInformationProvider assemblyInformationProvider, IJobManager jobManager, IServerControl serverControl, ISystemIdentityFactory systemIdentityFactory, IAsyncDelayer asyncDelayer, IServerPortProvider serverPortProvider, ISwarmService swarmService, IOptions <GeneralConfiguration> generalConfigurationOptions, IOptions <SwarmConfiguration> swarmConfigurationOptions, ILogger <InstanceManager> logger) { this.instanceFactory = instanceFactory ?? throw new ArgumentNullException(nameof(instanceFactory)); this.ioManager = ioManager ?? throw new ArgumentNullException(nameof(ioManager)); this.databaseContextFactory = databaseContextFactory ?? throw new ArgumentNullException(nameof(databaseContextFactory)); this.assemblyInformationProvider = assemblyInformationProvider ?? throw new ArgumentNullException(nameof(assemblyInformationProvider)); this.jobManager = jobManager ?? throw new ArgumentNullException(nameof(jobManager)); this.serverControl = serverControl ?? throw new ArgumentNullException(nameof(serverControl)); this.systemIdentityFactory = systemIdentityFactory ?? throw new ArgumentNullException(nameof(systemIdentityFactory)); this.asyncDelayer = asyncDelayer ?? throw new ArgumentNullException(nameof(asyncDelayer)); this.serverPortProvider = serverPortProvider ?? throw new ArgumentNullException(nameof(serverPortProvider)); this.swarmService = swarmService ?? throw new ArgumentNullException(nameof(swarmService)); generalConfiguration = generalConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(generalConfigurationOptions)); swarmConfiguration = swarmConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(swarmConfigurationOptions)); this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); instances = new Dictionary <long, InstanceContainer>(); bridgeHandlers = new Dictionary <string, IBridgeHandler>(); readyTcs = new TaskCompletionSource <object>(); instanceStateChangeSemaphore = new SemaphoreSlim(1); }
public TcpServer(IContainerManager containerManager, IJobManager jobManager, uint tcpPort, CancellationToken cancellationToken) { if (containerManager == null) { throw new ArgumentNullException("containerManager"); } this.containerManager = containerManager; if (jobManager == null) { throw new ArgumentNullException("jobManager"); } this.jobManager = jobManager; if (cancellationToken == null) { throw new ArgumentNullException("cancellationToken"); } this.cancellationToken = cancellationToken; if (tcpPort < 1025 || tcpPort > 65535) { throw new ArgumentOutOfRangeException("tcpPort", tcpPort, "TCP port must be within IANA specifications of 1025 to 65535"); } this.endpoint = new IPEndPoint(IPAddress.Loopback, (int)tcpPort); this.listener = new TcpListener(endpoint); // lib/dea/task.rb, 66 this.listener.Server.NoDelay = true; }
public override void Execute( JobDefinition job, Action<int, int> notifyProgress, Action<string> updateStatus, IRepository repositoryService, IJobManager jobManager) { var allFiles = job.Files.ToDictionary(file => file, _ => false); var totalItems = job.Tasks.Count; var currentItem = 0; foreach (var task in job.Tasks) { updateStatus(string.Format("Processing files used by task \"{0}\"...", task.Name)); allFiles[task.EntryPoint.Assembly] = true; foreach (var file in task.EntryPoint.References) allFiles[file] = true; foreach (var file in task.InputFiles) allFiles[file] = true; foreach (var file in task.OutputFiles) allFiles[file] = true; currentItem++; notifyProgress(currentItem, totalItems); } updateStatus("Building file list..."); job.Files = allFiles.Where(pair => pair.Value) .Select(pair => pair.Key) .ToList(); }
public void ManagerScriptTest() { string managerCode = "using System; using Models.Core; namespace Models { public class Script : Model, ITest { public void Run() { @action } } }"; Manager testManager = new Manager(); testManager.Name = "TestScript"; Folder testFolder = new Folder(); testFolder.Name = "TestFolder"; testFolder.Children = new List <Model>() { testManager }; testManager.Parent = testFolder; MockStorage storage = new MockStorage(); Simulations simToRun = Simulations.Create(new List <IModel>() { testFolder, storage }); IJobManager jobManager = Runner.ForSimulations(simToRun, simToRun, true); // Test should fail if it throws. testManager.Code = managerCode.Replace("@action", "throw new Exception(\"Test has failed.\");"); TestWithAllJobRunners(jobManager, EnsureSimulationRanRed); // Test should pass if it doesn't throw. testManager.Code = managerCode.Replace("@action", "return;"); TestWithAllJobRunners(jobManager, EnsureSimulationRanGreen); }
public ControllerEngine(bool startSynchronization, int syncFrequency) { _JobManager = new JobManager(); _Broker = new Broker(); _PluginThreadBlocker = new AutoResetEvent(false); IsDisposed = false; _ShouldRunPlugins = startSynchronization; _PluginThread = new Thread(CheckAllPluginsAndRunRunablesLoop); _PluginThread.Name = "Controller Thread"; JobManager.JobAddedToQueue += JobManager_JobAddedToQueue; Broker.ExecuteCompleted += Broker_PluginOperationEnded; Broker.ExecuteFailed += Broker_PluginOperationEnded; Broker.CommitCompleted += Broker_PluginOperationEnded; Broker.CommitFailed += Broker_PluginOperationEnded; Broker.RollbackCompleted += Broker_PluginOperationEnded; Broker.RollbackFailed += Broker_PluginOperationEnded; InitializeAgents(); if (startSynchronization) _JobManager.BeginSynchronize(syncFrequency); }
/// <summary> /// Constructor. /// </summary> /// <param name="manager">JobManager</param> public JobManagerSettingPage(IJobManager manager) { InitializeComponent(); m_manager = manager; string name = m_manager.GetCurrentEnvironment(); List<string> envList = m_manager.GetEnvironmentList(); foreach (string envname in envList) { int index = envComboBox.Items.Add(envname); if (name.Equals(envname)) { envComboBox.SelectedIndex = index; Dictionary<string, object> propDic = m_manager.GetEnvironmentProperty(); int conc = m_manager.GetDefaultConcurrency(); concTextBox.Text = conc.ToString(); envDataGridView.Rows.Clear(); foreach (string propName in propDic.Keys) { int i = envDataGridView.Rows.Add( new object[] { propName, propDic[propName].ToString() }); envDataGridView.Rows[i].Tag = propDic[propName].GetType(); } } } this.Name = MessageResources.NameJobManage; }
private void Start() { _gem = _locator.GetService <IEntityManager>(); _map = _locator.GetService <IHexMap>(); _inputMachine = new InputStateMachine(); _inputMachine.SetState(null); var input = _locator.GetService <IGameInputManager>(); input.RegisterProcessor(_inputMachine); _jconverter = _locator.GetService <IJsonConverter>(); _jobManager = _locator.GetService <IJobManager>(); _networker = _locator.GetService <INetworker>(); var networkDataHandler = new Dictionary <EventCode, Action <string> >(); _networker.DataReceived += (code, data) => { if (networkDataHandler.ContainsKey(code)) { networkDataHandler[code].Invoke(data); } else { Debug.Log($"[GameManager] unhandeled event code received: {code}\n{data}"); } }; networkDataHandler.Add(EventCode.GameStart, MakeHandlerBridge <GameConfiguration>(StartGame)); networkDataHandler.Add(EventCode.GameAbort, MakeHandlerBridge <GameAbortData>(GameAborted)); networkDataHandler.Add(EventCode.StartTurn, MakeHandlerBridge <StartTurnData>(StartNextTurn)); networkDataHandler.Add(EventCode.DoJob, MakeHandlerBridge <IJob>(OnDoJob)); }
public void WaitInt_WasRunningThenCanceled_WaitsAndReturnsCanceled() { // Arrange using IJobManager jobManager = TestHelper.CreateJobManager(true); var start = "2000-01-01Z".ToUtcDateOffset(); var timeMachine = ShiftedTimeProvider.CreateTimeMachine(start); TimeProvider.Override(timeMachine); var job = jobManager.Create("my-job"); job.IsEnabled = true; job.Routine = async(parameter, tracker, output, token) => { await Task.Delay(500, token); }; // Act job.ForceStart(); ThreadPool.QueueUserWorkItem(state => { Thread.Sleep(200); job.Cancel(); }); var waitResult = job.Wait(1000); // Assert Assert.That(waitResult, Is.EqualTo(JobRunStatus.Canceled)); }
/// <summary> /// /// </summary> /// <param name="asyncExecutor"></param> /// <param name="jobManager"></param> public AcquireTimerJobsRunnable(IAsyncExecutor asyncExecutor, IJobManager jobManager) { this.asyncExecutor = asyncExecutor; this.jobManager = jobManager; this.Runable += new ThreadStart(Run); }
private static async Task StartJob( IJobManager jobManager, TwitterCredentialsOptions twitterCredentialsOptions, TwitterMetadata metadata ) { // var query = "snakebite;snakebites;\"morsure de serpent\";\"morsures de serpents\";\"لدغات الأفاعي\";\"لدغة الأفعى\";\"لدغات أفاعي\";\"لدغة أفعى\""; // TODO add NOT cocktail NOT music // var query = "snake bite NOT cocktail NOT darts NOT piercing"; var jobId = Guid.Parse("a43e8bb4-9c15-48a8-a0a3-7479b75eb6d0"); var jobConfig = new DataAcquirerJobConfig() { Attributes = new Dictionary <string, string> { { "TopicQuery", metadata.Query }, { "AccessToken", twitterCredentialsOptions.AccessToken }, { "AccessTokenSecret", twitterCredentialsOptions.AccessTokenSecret }, { "ApiKey", twitterCredentialsOptions.ApiKey }, { "ApiSecretKey", twitterCredentialsOptions.ApiSecretKey }, }, JobId = jobId, OutputMessageBrokerChannels = new string[] { "job_management.component_data_input.DataAnalyser_sentiment" } }; try { await jobManager.StartNewJobAsync(jobConfig); } catch { } }
/// <summary> /// Construct an <see cref="InstanceManager"/> /// </summary> /// <param name="instanceFactory">The value of <see cref="instanceFactory"/></param> /// <param name="ioManager">The value of <paramref name="ioManager"/></param> /// <param name="databaseContextFactory">The value of <paramref name="databaseContextFactory"/></param> /// <param name="application">The value of <see cref="application"/></param> /// <param name="jobManager">The value of <see cref="jobManager"/></param> /// <param name="serverControl">The <see cref="IServerControl"/> for the <see cref="InstanceManager"/></param> /// <param name="logger">The value of <see cref="logger"/></param> public InstanceManager(IInstanceFactory instanceFactory, IIOManager ioManager, IDatabaseContextFactory databaseContextFactory, IApplication application, IJobManager jobManager, IServerControl serverControl, ILogger <InstanceManager> logger) { this.instanceFactory = instanceFactory ?? throw new ArgumentNullException(nameof(instanceFactory)); this.ioManager = ioManager ?? throw new ArgumentNullException(nameof(ioManager)); this.databaseContextFactory = databaseContextFactory ?? throw new ArgumentNullException(nameof(databaseContextFactory)); this.application = application ?? throw new ArgumentNullException(nameof(application)); this.jobManager = jobManager ?? throw new ArgumentNullException(nameof(jobManager)); if (serverControl == null) { throw new ArgumentNullException(nameof(serverControl)); } shutdownCancellationTokenSource = new CancellationTokenSource(); var cancellationToken = shutdownCancellationTokenSource.Token; serverControl.RegisterForRestart(() => { lock (this) shutdownTasks.AddRange(instances.Select(x => x.Value.Chat.SendBroadcast("TGS: Restart requested...", cancellationToken))); }); this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); instances = new Dictionary <long, IInstance>(); shutdownTasks = new List <Task>(); }
public NotificationManager(AndroidContext context, IServiceProvider services, ISerializer serializer, IJobManager jobs, IRepository repository, ISettings settings) { this.context = context; this.services = services; this.serializer = serializer; this.jobs = jobs; this.repository = repository; this.settings = settings; // auto process intent? //this.context // .WhenActivityStatusChanged() // .Where(x => x.Status == ActivityState.Created) // .Subscribe(x => TryProcessIntent(x.Activity.Intent)); if (this.context.IsMinApiLevel(26)) { this.newManager = Native.FromContext(context.AppContext); } else { this.compatManager = NotificationManagerCompat.From(context.AppContext); } }
/// <summary>Main DoWork method for the task thread.</summary> private void JobRunnerThread() { IJobManager nextJob = null; while (!cancel) { try { nextJob = GetJobFromServer(); if (nextJob != null) { // Run the job. IJobRunner runner = new JobRunnerAsync(); runner.Run(nextJob, wait: true, numberOfProcessors: Convert.ToInt32(appSettings["MaximumNumberOfCores"])); // Tell the server we've finished the job. UpdateServerForCompletedJob(nextJob); } } catch (Exception err) { WriteToLog(err.Message); } } }
/// <summary>Run the specified jobs</summary> /// <param name="jobs">An instance of a class that manages all jobs.</param> /// <param name="wait">Wait until all jobs finished before returning?</param> /// <param name="numberOfProcessors">The maximum number of cores to use.</param> public void Run(IJobManager jobs, bool wait = false, int numberOfProcessors = -1) { // Determine number of threads to use if (numberOfProcessors == -1) { string numOfProcessorsString = Environment.GetEnvironmentVariable("NUMBER_OF_PROCESSORS"); if (numOfProcessorsString != null) { numberOfProcessors = Convert.ToInt32(numOfProcessorsString); } numberOfProcessors = System.Math.Max(numberOfProcessors, 1); } cancelToken = new CancellationTokenSource(); // Run all jobs on background thread Task t = Task.Run(() => JobRunnerThread(jobs, numberOfProcessors)); if (wait) { while (!t.IsCompleted) { Thread.Sleep(200); } } }
public override void Execute( Japi.Job job, Action<string> updateStatus, IRepository repositoryService, IJobManager jobManager) { }
/// <summary> /// Initializes a new instance of the <see cref="BasicWatchdog"/> <see langword="class"/>. /// </summary> /// <param name="chat">The <see cref="IChatManager"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="sessionControllerFactory">The <see cref="ISessionControllerFactory"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="dmbFactory">The <see cref="IDmbFactory"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="sessionPersistor">The <see cref="ISessionPersistor"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="jobManager">The <see cref="IJobManager"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="serverControl">The <see cref="IServerControl"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="asyncDelayer">The <see cref="IAsyncDelayer"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="diagnosticsIOManager">The <see cref="IIOManager"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="eventConsumer">The <see cref="IEventConsumer"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="remoteDeploymentManagerFactory">The <see cref="IRemoteDeploymentManagerFactory"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="logger">The <see cref="ILogger"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="initialLaunchParameters">The <see cref="DreamDaemonLaunchParameters"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="instance">The <see cref="Api.Models.Instance"/> for the <see cref="WatchdogBase"/>.</param> /// <param name="autoStart">The autostart value for the <see cref="WatchdogBase"/>.</param> public BasicWatchdog( IChatManager chat, ISessionControllerFactory sessionControllerFactory, IDmbFactory dmbFactory, ISessionPersistor sessionPersistor, IJobManager jobManager, IServerControl serverControl, IAsyncDelayer asyncDelayer, IIOManager diagnosticsIOManager, IEventConsumer eventConsumer, IRemoteDeploymentManagerFactory remoteDeploymentManagerFactory, ILogger <BasicWatchdog> logger, DreamDaemonLaunchParameters initialLaunchParameters, Api.Models.Instance instance, bool autoStart) : base( chat, sessionControllerFactory, dmbFactory, sessionPersistor, jobManager, serverControl, asyncDelayer, diagnosticsIOManager, eventConsumer, remoteDeploymentManagerFactory, logger, initialLaunchParameters, instance, autoStart) { }
public async Task <Result> TestJob([FromServices] IJobManager jobManager) { jobManager.Enqueue <Demo1, Demo1Args>(new Demo1Args { Name = "1" }); return(Result.Ok()); }
public DriftCorrector(Transform transform, Rigidbody rigidbody, string optionalClientName = "Unknown") { D.Assert(!rigidbody.useGravity); // can be isKinematic until operations commence ClientName = optionalClientName; _transform = transform; _rigidbody = rigidbody; _gameMgr = References.GameManager; _jobMgr = References.JobManager; }
public override void Execute( Japi.Job job, Action<string> updateStatus, IRepository repositoryService, IJobManager jobManager) { job.Id = jobManager.CreateJob(job.Name).Id; }
/// <summary> /// Initializes a new instance of the <see cref="StratumServer"/> class. /// </summary> /// <param name="pool"></param> /// <param name="minerManager">The miner manager.</param> /// <param name="jobManager"></param> /// <param name="banManager"></param> /// <param name="poolConfig"></param> public StratumServer(IPoolConfig poolConfig, IPool pool, IMinerManager minerManager, IJobManager jobManager, IBanManager banManager) { _pool = pool; _minerManager = minerManager; _jobManager = jobManager; _banManager = banManager; _logger = Log.ForContext<StratumServer>().ForContext("Component", poolConfig.Coin.Name); }
public override void Execute( JobDefinition job, Action<int, int> notifyProgress, Action<string> updateStatus, IRepository repositoryService, IJobManager jobManager) { updateStatus("Linking files..."); }
public JobRequestHandler(IContainerManager containerManager, IJobManager jobManager, Request request) : base(containerManager, request) { if (jobManager == null) { throw new ArgumentNullException("jobManager"); } this.jobManager = jobManager; }
public override void Execute( JobDefinition job, Action<int, int> notifyProgress, Action<string> updateStatus, IRepository repositoryService, IJobManager jobManager) { updateStatus("Creating job..."); job.Id = jobManager.CreateJob(job.Name).Id; }
public UploadJobView(StagesProvider stagesProvider, JobDefinition job, IRepositoryClientFactory repositoryClientFactory, IJobManager jobManager) { InitializeComponent(); this.stagesProvider = stagesProvider; this.jobManager = jobManager; this.repositoryClientFactory = repositoryClientFactory; this.job = job; listStages.ItemsSource = stagesProvider.Stages; progressBar.Maximum = ProgressBarMaximum; }
/// <summary> /// Gets the specified service name. /// </summary> /// <param name="serverName">Name of the service.</param> /// <param name="pool"></param> /// <param name="minerManager">The miner manager.</param> /// <returns></returns> public IMiningServer Get(string serverName, IPool pool, IMinerManager minerManager, IJobManager jobManager) { var @params = new NamedParameterOverloads { {"pool", pool}, {"minerManager", minerManager}, {"jobManager", jobManager} }; return _applicationContext.Container.Resolve<IMiningServer>(serverName, @params); }
public JobProcessor( IWamsClient wamsClient, IAssetManager assetManager, IJobManager jobManager, IOrchardServices orchardServices, IDistributedLockService distributedLockService) { _wamsClient = wamsClient; _assetManager = assetManager; _jobManager = jobManager; _orchardServices = orchardServices; _distributedLockService = distributedLockService; }
public AccountContext( IDbContext dbContext, IEmailService mailService, AccountManager accoutnManager, IBlobService blobService, IJobManager jobManager) { this.dbContext = dbContext; this.accountManager = accoutnManager; this.blobService = blobService; this.jobManager = jobManager; this.mailService = mailService; }
public override void Execute( Japi.Job job, Action<string> updateStatus, IRepository repositoryService, IJobManager jobManager) { updateStatus("Validating job's graph..."); var index = 0; var count = job.Tasks.Count; if(!job.Tasks.All(task => RecoursiveCheckGraph(task, ImmutableList<Japi.Task>.Empty))) { throw new Exception("Job is invalid: graph contains cycles."); } }
public CloudVideoPartHandler( IAssetManager assetManager, IJobManager jobManager, INotifier notifier) { _assetManager = assetManager; _jobManager = jobManager; _notifier = notifier; T = NullLocalizer.Instance; OnActivated<CloudVideoPart>(SetupFields); OnPublishing<CloudVideoPart>(DeferOrPublishAssets); OnUnpublished<CloudVideoPart>(CancelAndUnpublishAssets); OnRemoved<CloudVideoPart>(RemoveAssets); }
public DownloadsViewModel(IJobManager jobManager) { Jobs = jobManager.CurrentJobs.CreateDerivedCollection( job => new DownloadItemViewModel(job), x => true, (x, y) => x.Job.CompareTo(y.Job), jobManager.WhenStatusChanged ); jobManager.CurrentJobs.CountChanged .StartWith(0) .Select(_ => Jobs.Count == 0) .ToProperty(this, x => x.IsEmpty, out _isEmpty); }
public override void Execute( Job job, Action<string> updateStatus, IRepository repositoryService, IJobManager jobManager) { Console.WriteLine("Press any key to begin deleting files..."); Console.ReadKey(); foreach(var file in job.Files) { updateStatus(string.Format("Deleting file: \"{0}\"...", file.Name)); repositoryService.Delete(file.Link.Id); } }
public JobProcessor( IWamsClient wamsClient, IClock clock, ITaskLeaseService taskLeaseService, IAssetManager assetManager, IJobManager jobManager, IOrchardServices orchardServices) { _wamsClient = wamsClient; _clock = clock; _taskLeaseService = taskLeaseService; _assetManager = assetManager; _jobManager = jobManager; _orchardServices = orchardServices; }
public override void Execute( Japi.Job job, Action<string> updateStatus, IRepository repositoryService, IJobManager jobManager) { foreach(var file in job.Files) { if(file is Japi.CreateFile) updateStatus(string.Format("Creating file: {0}...", file.Name)); else updateStatus(string.Format("Uploading file: {0}...", file.Name)); file.SaveFile(repositoryService); } }
public BitbucketService( IBitbucketApiService apiService, IRepository<BitbucketRepositoryDataRecord> repository, IJobManager jobManager, IFileProcessor fileProcessor, IContentManager contentManager, IEncryptionService encryptionService) { _apiService = apiService; _jobManager = jobManager; _repository = repository; _fileProcessor = fileProcessor; _contentManager = contentManager; _encryptionService = encryptionService; }
public override void Execute( JobDefinition job, Action<int, int> notifyProgress, Action<string> updateStatus, IRepository repositoryService, IJobManager jobManager) { updateStatus("Validating job's graph..."); var index = 0; var count = job.Tasks.Count; if (!job.Tasks.All(task => { notifyProgress(++index, count); return RecoursiveCheckGraph(task, ImmutableList<Guid>.Empty); })) throw new Exception("Job is invalid: graph contains cycles."); }
public InternalLinksExtractor( IGraphManager graphManager, IContentManager contentManager, ISiteService siteService, IJobManager jobManager, IAliasService aliasService, IScheduledTaskManager scheduledTaskManager, IClock clock, IGraphSettingsService settingsService) { _graphManager = graphManager; _contentManager = contentManager; _siteService = siteService; _jobManager = jobManager; _aliasService = aliasService; _scheduledTaskManager = scheduledTaskManager; _clock = clock; _settingsService = settingsService; }
public OrderRepository( IJobManager manager, SupportedOrderStore supportedOrderStore, AccountManager accountManager, IHRIDService hridService, IPaymentManager paymentManager, IVendorService vendorService ) { this.manager = manager; this.supportedOrderStore = supportedOrderStore; this.accountManager = accountManager; this.hridService = hridService; this.vendorService = vendorService; orderCalculationService = new DefaultOrderCalculationService(); serviceChargeCalculationService = new DefaultDeliveryServiceChargeCalculationService(); paymentService = new PaymentService(paymentManager); }
public override void Execute( Japi.Job job, Action<string> updateStatus, IRepository repositoryService, IJobManager jobManager) { var timer = Stopwatch.StartNew(); jobManager.OpenJob(job.Id); jobManager.StartJob(); while(true) { var state = jobManager.QueryJobState(job.Id); if(state == JobState.Completed) { timer.Stop(); updateStatus(string.Format("Job completed in {0} ms", timer.ElapsedMilliseconds)); return; } if(state == JobState.Failed) { timer.Stop(); using (ConsoleMessage.Error()) { updateStatus("Job failed. Loading error report..."); var summary = jobManager.GetErrorReport(job.Id); updateStatus(string.Format("Error report for job {{{0}, \"{1}\"}}", summary.JobId, summary.JobName)); foreach (var report in summary.Errors) { updateStatus(string.Format("Task {{{0}, \"{1}\"}}: {2}", report.Task.Id, report.Task.Name, report.Error)); } } return; } Thread.Sleep(100); } }