예제 #1
0
 public RefreshableJob(Job hiveJob) {
   this.progress = new Progress();
   this.refreshAutomatically = true;
   this.Job = hiveJob;
   this.log = new ThreadSafeLog();
   this.jobDownloader = new ConcurrentTaskDownloader<ItemTask>(Settings.Default.MaxParallelDownloads, Settings.Default.MaxParallelDownloads);
   this.jobDownloader.ExceptionOccured += new EventHandler<EventArgs<Exception>>(jobDownloader_ExceptionOccured);
   this.HiveTasks = new ItemCollection<HiveTask>();
 }
예제 #2
0
        private static void RegisterLoggerTypes(TinyIoCContainer container)
        {
            container.Register <IClientMessenger, ClientMessenger>().AsSingleton();
            container.Register <IMemoryLog, MemoryLog>().AsSingleton();
            TinyIoCContainer logContainer = CreateHelperLogBuilderContainer(container);
            var threadSafeLog             = new ThreadSafeLog(logContainer.Resolve <ILog>());

            container.Register <ILog, ThreadSafeLog>(threadSafeLog);
            container.Register <ILogger>(
                (c, p) => new Logger(new Context("Chooie.Startup"), c.Resolve <ILog>()));
        }
예제 #3
0
 protected RefreshableJob(RefreshableJob original, Cloner cloner) {
   cloner.RegisterClonedObject(original, this);
   this.Job = cloner.Clone(original.Job);
   this.IsControllable = original.IsControllable;
   this.log = cloner.Clone(original.log);
   this.RefreshAutomatically = false; // do not start results polling automatically
   this.jobDownloader = new ConcurrentTaskDownloader<ItemTask>(Settings.Default.MaxParallelDownloads, Settings.Default.MaxParallelDownloads);
   this.jobDownloader.ExceptionOccured += new EventHandler<EventArgs<Exception>>(jobDownloader_ExceptionOccured);
   this.HiveTasks = cloner.Clone(original.HiveTasks);
   this.ExecutionTime = original.ExecutionTime;
   this.ExecutionState = original.ExecutionState;
 }
예제 #4
0
        public void ThreadSafeLogThreadSafetyTest()
        {
            int           count = 10000;
            ThreadSafeLog log   = new ThreadSafeLog();

            Parallel.For(0, count, (i) => {
                log.LogMessage("Message " + i); // write something
                log.Messages.Count();           // iterate over all messages
            });

            Assert.AreEqual(count, log.Messages.Count());
        }
예제 #5
0
        public Core()
        {
            var log = new ThreadSafeLog(SlaveCore.Properties.Settings.Default.MaxLogCount);

            this.pluginManager = new PluginManager(WcfService.Instance, log);
            this.taskManager   = new TaskManager(pluginManager, log);
            log.MessageAdded  += new EventHandler <EventArgs <string> >(log_MessageAdded);

            RegisterTaskManagerEvents();

            this.configManager     = new ConfigManager(taskManager);
            ConfigManager.Instance = this.configManager;
        }