コード例 #1
0
 public AddGeneratorTask(LuceneQueryable queryable,
                         IIndexableGenerator generator)
 {
     this.queryable = queryable;
     this.generator = generator;
     this.Tag       = generator.StatusName;
 }
コード例 #2
0
        public Scheduler.Task NewAddTask(IIndexableGenerator generator)
        {
            AddGeneratorTask task;

            task        = new AddGeneratorTask(this, generator);
            task.Source = this;
            return(task);
        }
コード例 #3
0
ファイル: FileCrawlTask.cs プロジェクト: universsky/beagrep
        private void PostCrawlHook()
        {
            Logger.Log.Debug("Done crawling '{0}'", current_dir.FullName);

            queryable.DoneCrawlingOneDirectory(current_dir);

            current_generator = null;
            current_dir       = null;
        }
コード例 #4
0
		private void PostCrawlHook ()
		{
			Logger.Log.Debug ("Done crawling '{0}'", current_dir.FullName);

			queryable.DoneCrawlingOneDirectory (current_dir);

			current_generator = null;
			current_dir = null;
		}
コード例 #5
0
        private void AddIIndexableTask(IIndexableGenerator generator, string tag)
        {
            if (generator == null)
            {
                return;
            }

            Scheduler.Task task = queryable.NewAddTask(generator);
            task.Tag = tag;
            queryable.ThisScheduler.Add(task);
        }
コード例 #6
0
		private void AddTask (IIndexableGenerator generator, string tag)
		{
			if (queryable.ThisScheduler.ContainsByTag (tag)) {
				Logger.Log.Info ("Not adding already running task: {0}", tag);
				return;
			}
			
			Scheduler.Task task = queryable.NewAddTask (generator);
			task.Tag = tag;
			queryable.ThisScheduler.Add (task);
		}
コード例 #7
0
        private void AddIIndexableTask(IIndexableGenerator generator, string tag)
        {
            if (queryable.ThisScheduler.ContainsByTag(tag))
            {
                Logger.Log.Debug("Not adding a Task for already running: {0}", tag);
                return;
            }

            Scheduler.Task task = queryable.NewAddTask(generator);
            task.Tag = tag;
            queryable.ThisScheduler.Add(task);
        }
コード例 #8
0
		private void AddIIndexableTask (IIndexableGenerator generator, string tag)
		{
			if (generator == null)
				return;

			Scheduler.Task task = queryable.NewAddTask (generator);
			task.Tag = tag;
			queryable.ThisScheduler.Add (task);
		}	
コード例 #9
0
		override protected void DoTaskReal ()
		{
			// If our last generator is still doing stuff, just reschedule
			// and return.  This keeps us from generating more tasks until
			// the last one we started runs to completion.
			if ((current_generator != null && current_generator.HasNextIndexable ())
				|| current_dir != null) {
				Reschedule = true;
				return;
			}

			lock (big_lock) {
				Log.Debug ("Running file crawl task");
				current_dir = queryable.GetNextDirectoryToCrawl ();
				if (current_dir == null) {
					Log.Debug ("Done crawling files!!!");
					SetIsActive (false, current_dir);
					return;
				}

				SetIsActive (true, current_dir);
			}
			
			if (!current_dir.IsAttached) {
				Reschedule = true;
				return;
			}

			if (FileSystemQueryable.Debug) {
				Logger.Log.Debug ("Starting crawl of '{0}'", current_dir.FullName);
				
				if (current_dir.State == DirectoryState.PossiblyClean)
					Log.Debug ("It looks as though we've crawled '{0}' before", current_dir.FullName);
			}

			// Schedule a DirectoryIndexableGenerator
			// for that directory, and then reschedule ourselves.
			try {
				current_generator = new DirectoryIndexableGenerator (queryable, current_dir);
			} catch (DirectoryNotFoundException ex) {
				Logger.Log.Debug ("Couldn't crawl '{0}'", current_dir.FullName);

				// FIXME: If our attempt to crawl the directory fails, just
				// mark it as uncrawlable and move on.  This isn't optimal behavior,
				// but works around bugs involving weird permissions for now.
				current_dir.MarkAsUncrawlable ();
				current_dir = null;
			}
			
			if (current_generator != null) {
				Scheduler.TaskGroup group;
				group = Scheduler.NewTaskGroup ("Crawl task group", null, our_post_hook);

				Scheduler.Task task;
				task = queryable.NewAddTask (current_generator);
				task.AddTaskGroup (group);
				SpawnChild (task);
			}

			Reschedule = true;
		}
コード例 #10
0
ファイル: FileCrawlTask.cs プロジェクト: universsky/beagrep
        override protected void DoTaskReal()
        {
            // If our last generator is still doing stuff, just reschedule
            // and return.  This keeps us from generating more tasks until
            // the last one we started runs to completion.
            if ((current_generator != null && current_generator.HasNextIndexable()) ||
                current_dir != null)
            {
                Reschedule = true;
                return;
            }

            lock (big_lock) {
                Log.Debug("Running file crawl task");
                current_dir = queryable.GetNextDirectoryToCrawl();
                if (current_dir == null)
                {
                    Log.Debug("Done crawling files!!!");
                    SetIsActive(false, current_dir);
                    return;
                }

                SetIsActive(true, current_dir);
            }

            if (!current_dir.IsAttached)
            {
                Reschedule = true;
                return;
            }

            if (FileSystemQueryable.Debug)
            {
                Logger.Log.Debug("Starting crawl of '{0}'", current_dir.FullName);

                if (current_dir.State == DirectoryState.PossiblyClean)
                {
                    Log.Debug("It looks as though we've crawled '{0}' before", current_dir.FullName);
                }
            }

            // Schedule a DirectoryIndexableGenerator
            // for that directory, and then reschedule ourselves.
            try {
                current_generator = new DirectoryIndexableGenerator(queryable, current_dir);
            } catch (DirectoryNotFoundException ex) {
                Logger.Log.Debug("Couldn't crawl '{0}'", current_dir.FullName);

                // FIXME: If our attempt to crawl the directory fails, just
                // mark it as uncrawlable and move on.  This isn't optimal behavior,
                // but works around bugs involving weird permissions for now.
                current_dir.MarkAsUncrawlable();
                current_dir = null;
            }

            if (current_generator != null)
            {
                Scheduler.TaskGroup group;
                group = Scheduler.NewTaskGroup("Crawl task group", null, our_post_hook);

                Scheduler.Task task;
                task = queryable.NewAddTask(current_generator);
                task.AddTaskGroup(group);
                SpawnChild(task);
            }

            Reschedule = true;
        }
コード例 #11
0
		public Scheduler.Task NewAddTask (IIndexableGenerator generator)
		{
			AddGeneratorTask task;
			task = new AddGeneratorTask (this, generator);
			task.Source = this;
			return task;
		}
コード例 #12
0
			public AddGeneratorTask (LuceneQueryable     queryable,
						 IIndexableGenerator generator)
			{
				this.queryable = queryable;
				this.generator = generator;
				this.Tag = generator.StatusName;
			}