Exemplo n.º 1
0
        public void Process(DBH dbh, DatabaseManager dbmanager, WebClient client)
        {
            Console.WriteLine("Processing member {0}", Id);
            Status = STATUS_DONE;
            try
            {
                client.Encoding = SearchEngineManager.GetEncoding(EngineId);
                //WebClient client = SearchEngineManager.PrepareWebClient(EngineId);
                content = client.DownloadString(Url);
                switch (TaskType)
                {
                    case TASKTYPE_SEARCH:
                        SearchItem[] slist = SearchEngineManager.ExtractSearchItems(this);
                        dbmanager.InsertApprovalItems(dbh, this, slist);
                        break;
                    case TASKTYPE_UPDATE_INFO:
                        PriceInfo pi = SearchEngineManager.ExtractPriceInfo(this);
                        dbmanager.InsertPriceInfo(ProductId, EngineId, pi);
                        break;
                }
            }
            catch
            {
                Console.WriteLine("Member {0} failed", Id);
                Status = Errors++ == Member.ERROR_LIMIT ? STATUS_FAILED : STATUS_NEW;
            }
            // update the member's status
            dbh.ExecuteStoreCommand("update WebTask set Status={0}, Errors={1} where Id={2}",
                        Status, Errors, Id);

            dbh.SaveChanges();
        }
Exemplo n.º 2
0
        void Init()
        {
            Console.WriteLine("Initializig Controller in background");
            CancellationToken token = cancelFactory.Token;

            // create an instance of database manager
            token.ThrowIfCancellationRequested();
            dbmanager = new DatabaseManager(db_path);
            // initialize search engines
            token.ThrowIfCancellationRequested();
            SearchEngine[] engines = SearchEngineManager.GetAllEngines();
            dbmanager.SyncEngines(engines, token);
            token.ThrowIfCancellationRequested();
            initialized = true;
        }