#ifndef _SPIDERMANAGER_H #define _SPIDERMANAGER_H #include "Spider.h" //----------------------------------------------- SpiderManager ----------------------------------------------- class SpiderManager: public SpiderEventSink, private StringMap { static TIPsDatabase *m_db; vector m_domains; //Internet domains that require spidering vector m_objects; //objects created from those domains that need to be put in the DB //DB Thread static THREAD_CALLBACK_TYPE staticRunDBThreadasync(LPVOID lpParam); //lpParam = the SpiderManager this bool m_runDB; int runDBThread(); //actual run function pthread_t m_DBThread; //run thread handle pthread_mutex_t m_objects_mutex; //for adding/deleting from m_objects pthread_cond_t m_hasObjects_cond; //for sleep when no objects pthread_mutex_t m_hasObjects_mutex; //reports access all parts of all relevant classes friend class Report; friend class Report_Full; friend class Report_DomainSummary; public: SpiderManager(TIPsDatabase* _db); ~SpiderManager(); int run(); //Synchronous run with asynchronous Spider runs (returns immediately) int stop(); //SpiderEventSink int finishedDomain(Spider *spider); int finishedPage(Spider *spider, InternetResource *resource); //analysed with links and body }; #endif