diff --git a/src/common/kiwix/indexer.cpp b/src/common/kiwix/indexer.cpp index 99cb2870a..0092bc8d0 100644 --- a/src/common/kiwix/indexer.cpp +++ b/src/common/kiwix/indexer.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2011-2012 Emmanuel Engelhart + * Copyright 2011-2014 Emmanuel Engelhart * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -54,6 +54,10 @@ namespace kiwix { pthread_mutex_init(&verboseMutex, NULL); } + /* Destructor */ + Indexer::~Indexer() { + } + /* Read the stopwords */ void Indexer::readStopWords(const string languageCode) { std::string stopWord; @@ -246,11 +250,8 @@ namespace kiwix { writeTextFile(path, self->getZimId()); self->setProgression(100); -#ifdef _WIN32 - Sleep(100); -#else - usleep(100000); -#endif + kiwix::sleep(100); + self->articleIndexerRunning(false); pthread_exit(NULL); return NULL; @@ -281,21 +282,12 @@ namespace kiwix { pthread_mutex_lock(&toParseQueueMutex); this->toParseQueue.push(token); pthread_mutex_unlock(&toParseQueueMutex); -#ifdef _WIN32 - Sleep(int(this->toParseQueue.size() / 200) / 10 * 1000); -#else - usleep(int(this->toParseQueue.size() / 200) / 10 * 1000000); -#endif + kiwix::sleep(int(this->toParseQueue.size() / 200) / 10 * 1000); } bool Indexer::popFromToParseQueue(indexerToken &token) { while (this->isToParseQueueEmpty() && this->isArticleExtractorRunning()) { -#ifdef _WIN32 - Sleep(500); -#else - usleep(500000); -#endif - + kiwix::sleep(500); if (this->getVerboseFlag()) { std::cout << "Waiting... ToParseQueue is empty for now..." << std::endl; } @@ -327,20 +319,12 @@ namespace kiwix { pthread_mutex_lock(&toIndexQueueMutex); this->toIndexQueue.push(token); pthread_mutex_unlock(&toIndexQueueMutex); -#ifdef _WIN32 - Sleep(int(this->toIndexQueue.size() / 200) / 10 * 1000); -#else - usleep(int(this->toIndexQueue.size() / 200) / 10 * 1000000); -#endif + kiwix::sleep(int(this->toIndexQueue.size() / 200) / 10 * 1000); } bool Indexer::popFromToIndexQueue(indexerToken &token) { while (this->isToIndexQueueEmpty() && this->isArticleParserRunning()) { -#ifdef _WIN32 - Sleep(500); -#else - usleep(500000); -#endif + kiwix::sleep(500); if (this->getVerboseFlag()) { std::cout << "Waiting... ToIndexQueue is empty for now..." << std::endl; } @@ -443,11 +427,7 @@ namespace kiwix { pthread_detach(this->articleExtractor); while(this->isArticleExtractorRunning() && this->getArticleCount() == 0) { -#ifdef _WIN32 - Sleep(100); -#else - usleep(100000); -#endif + kiwix::sleep(100); } this->articleParserRunning(true); diff --git a/src/common/kiwix/indexer.h b/src/common/kiwix/indexer.h index 42476bb99..410509336 100644 --- a/src/common/kiwix/indexer.h +++ b/src/common/kiwix/indexer.h @@ -1,5 +1,5 @@ /* - * Copyright 2011 Emmanuel Engelhart + * Copyright 2014 Emmanuel Engelhart * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,14 +28,9 @@ #include #include -#ifdef _WIN32 -#include -#else -#include -#endif - #include #include +#include #include #include #include @@ -62,6 +57,8 @@ namespace kiwix { public: Indexer(); + virtual ~Indexer(); + bool start(const string zimPath, const string indexPath); bool stop(); bool isRunning(); diff --git a/src/common/kiwix/xapianIndexer.cpp b/src/common/kiwix/xapianIndexer.cpp index 9272d4b2b..612b4ff93 100644 --- a/src/common/kiwix/xapianIndexer.cpp +++ b/src/common/kiwix/xapianIndexer.cpp @@ -28,7 +28,7 @@ namespace kiwix { this->indexer.set_stemmer(this->stemmer); */ } - + void XapianIndexer::indexingPrelude(const string indexPath) { this->writableDatabase = Xapian::WritableDatabase(indexPath, Xapian::DB_CREATE_OR_OVERWRITE); this->writableDatabase.begin_transaction(true); diff --git a/src/common/otherTools.cpp b/src/common/otherTools.cpp new file mode 100644 index 000000000..4603254f6 --- /dev/null +++ b/src/common/otherTools.cpp @@ -0,0 +1,28 @@ +/* + * Copyright 2014 Emmanuel Engelhart + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ + +#include "otherTools.h" + +void kiwix::sleep(unsigned int milliseconds) { +#ifdef _WIN32 + Sleep(milliseconds); +#else + usleep(1000 * milliseconds); +#endif +} diff --git a/src/common/otherTools.h b/src/common/otherTools.h new file mode 100644 index 000000000..4c7ae3b34 --- /dev/null +++ b/src/common/otherTools.h @@ -0,0 +1,33 @@ +/* + * Copyright 2014 Emmanuel Engelhart + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ + +#ifndef KIWIX_OTHERTOOLS_H +#define KIWIX_OTHERTOOLS_H + +#ifdef _WIN32 +#include +#else +#include +#endif + +namespace kiwix { + void sleep(unsigned int milliseconds); +} + +#endif