--- a/src/rcldb/rcldb_p.h
+++ b/src/rcldb/rcldb_p.h
@@ -26,10 +26,10 @@
#ifdef IDX_THREADS
#include "workqueue.h"
+#endif // IDX_THREADS
#include "debuglog.h"
-#endif // IDX_THREADS
-
#include "xmacros.h"
+#include "ptmutex.h"
namespace Rcl {
@@ -61,6 +61,8 @@
bool m_noversionwrite; //Set if open failed because of version mismatch!
#ifdef IDX_THREADS
WorkQueue<DbUpdTask*> m_wqueue;
+ int m_loglevel;
+ PTMutexInit m_mutex;
#endif // IDX_THREADS
// Indexing
@@ -76,18 +78,25 @@
: m_rcldb(db), m_isopen(false), m_iswritable(false),
m_noversionwrite(false)
#ifdef IDX_THREADS
- , m_wqueue(10)
+ , m_wqueue("DbUpd", 2)
#endif // IDX_THREADS
- { }
+ {
+ LOGDEB2(("Native::Native: me %p\n", this));
+ }
~Native() {
+ LOGDEB2(("Native::~Native: me %p\n", this));
#ifdef IDX_THREADS
if (m_iswritable) {
void *status = m_wqueue.setTerminateAndWait();
- LOGDEB(("Native: worker status %ld\n", long(status)));
+ LOGDEB2(("Native::~Native: worker status %ld\n", long(status)));
}
#endif // IDX_THREADS
}
+
+ // Final steps of doc update, part which need to be single-threaded
+ bool addOrUpdateWrite(const string& udi, const string& uniterm,
+ Xapian::Document& doc, size_t txtlen);
bool getPagePositions(Xapian::docid docid, vector<int>& vpos);
int getPageNumberForPosition(const vector<int>& pbreaks, unsigned int pos);