/** * Initializes logger and database. */ function ProxyFramework($dbFile, $proxyChecker, $snapshotInterval, $proxyCheckInterval, $quarantineCheckInterval, $checkingThreadCap, $maxQuarantineRetries, $pidFile) { $this->logger = new LoggingImpl(); Helper::checkString("dbFile", $dbFile, $this->logger); Helper::checkNull("proxyChecker", $proxyChecker, $this->logger); $db = new DatabaseImpl($dbFile, array(100, 5, 15, 3, 13, 1, 1, 1, 1, 10, 6, 6, 4)); $db->cacheEntries(); //preemptively cache entries to make sure the db state is the same across all threads $uniqueIP = new UniqueIPDatabase(); // set up mutexes and shared data, as well as the signal handler $this->init(); $this->setVar(__INDEX_DATA, $db); $this->setVar(__INDEX_PIDS, array()); $this->setVar(__INDEX_CHECKING_THREAD_COUNT, 0); $this->setVar(__INDEX_UDATA, $uniqueIP); $this->proxyChecker = $proxyChecker; $this->snapshotInterval = $snapshotInterval; $this->proxyCheckInterval = $proxyCheckInterval; $this->quarantineCheckInterval = $quarantineCheckInterval; $this->checkingThreadCap = $checkingThreadCap; $this->maxQuarantineRetries = $maxQuarantineRetries; ProxyFramework::$pidFile = $pidFile; ProxyFramework::$instance = $this; ProxyFramework::$mainPid = posix_getpid(); }