summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2020-09-23 13:48:20 +0800
committerPeng Wu <alexepico@gmail.com>2020-09-23 13:48:20 +0800
commit47305f5203d99089e7a04d797853b09845cfcc49 (patch)
treefdd7696a0784e6c9bd839ca4752d36b7c3a51796 /src
parent7a83a153634428aa14e9baafcb5d585e85769ec3 (diff)
downloadlibpinyin-47305f5203d99089e7a04d797853b09845cfcc49.tar.gz
libpinyin-47305f5203d99089e7a04d797853b09845cfcc49.tar.xz
libpinyin-47305f5203d99089e7a04d797853b09845cfcc49.zip
Use Kyoto Cabinet snapshot feature
Diffstat (limited to 'src')
-rw-r--r--src/storage/chewing_large_table2_kyotodb.cpp10
-rw-r--r--src/storage/kyotodb_utils.h2
-rw-r--r--src/storage/ngram_kyotodb.cpp10
-rw-r--r--src/storage/phrase_large_table3_kyotodb.cpp10
4 files changed, 32 insertions, 0 deletions
diff --git a/src/storage/chewing_large_table2_kyotodb.cpp b/src/storage/chewing_large_table2_kyotodb.cpp
index bfe20cd..5afdd1e 100644
--- a/src/storage/chewing_large_table2_kyotodb.cpp
+++ b/src/storage/chewing_large_table2_kyotodb.cpp
@@ -76,6 +76,10 @@ bool ChewingLargeTable2::load_db(const char * filename) {
if (!m_db->open("-", BasicDB::OREADER|BasicDB::OWRITER|BasicDB::OCREATE))
return false;
+ if (!m_db->load_snapshot(filename, NULL))
+ return false;
+
+#if 0
/* load db into memory. */
BasicDB * tmp_db = new TreeDB;
if (!tmp_db->open(filename, BasicDB::OREADER))
@@ -86,6 +90,7 @@ bool ChewingLargeTable2::load_db(const char * filename) {
tmp_db->close();
delete tmp_db;
+#endif
return true;
}
@@ -95,6 +100,10 @@ bool ChewingLargeTable2::store_db(const char * new_filename) {
if ( ret != 0 && errno != ENOENT)
return false;
+ if (!m_db->dump_snapshot(new_filename, NULL))
+ return false;
+
+#if 0
BasicDB * tmp_db = new TreeDB;
if (!tmp_db->open(new_filename, BasicDB::OWRITER|BasicDB::OCREATE))
return false;
@@ -105,6 +114,7 @@ bool ChewingLargeTable2::store_db(const char * new_filename) {
tmp_db->synchronize();
tmp_db->close();
delete tmp_db;
+#endif
return true;
}
diff --git a/src/storage/kyotodb_utils.h b/src/storage/kyotodb_utils.h
index 5e39212..4562007 100644
--- a/src/storage/kyotodb_utils.h
+++ b/src/storage/kyotodb_utils.h
@@ -49,6 +49,7 @@ inline uint32_t attach_options(guint32 flags) {
/* Kyoto Cabinet requires non-NULL pointer for zero length value. */
static const char * empty_vbuf = (char *)UINTPTR_MAX;
+#if 0
class CopyVisitor : public DB::Visitor {
private:
BasicDB * m_db;
@@ -68,6 +69,7 @@ public:
return NOP;
}
};
+#endif
};
diff --git a/src/storage/ngram_kyotodb.cpp b/src/storage/ngram_kyotodb.cpp
index 1529976..54c2055 100644
--- a/src/storage/ngram_kyotodb.cpp
+++ b/src/storage/ngram_kyotodb.cpp
@@ -60,6 +60,10 @@ bool Bigram::load_db(const char * dbfile){
if ( !m_db->open("-", BasicDB::OREADER|BasicDB::OWRITER|BasicDB::OCREATE) )
return false;
+ if (!m_db->load_snapshot(dbfile, NULL))
+ return false;
+
+#if 0
/* load db into memory. */
BasicDB * tmp_db = new HashDB;
if (!tmp_db->open(dbfile, BasicDB::OREADER))
@@ -70,6 +74,7 @@ bool Bigram::load_db(const char * dbfile){
tmp_db->close();
delete tmp_db;
+#endif
return true;
}
@@ -80,6 +85,10 @@ bool Bigram::save_db(const char * dbfile){
if ( ret != 0 && errno != ENOENT)
return false;
+ if (!m_db->dump_snapshot(dbfile, NULL))
+ return false;
+
+#if 0
BasicDB * tmp_db = new HashDB;
if ( !tmp_db->open(dbfile, BasicDB::OWRITER|BasicDB::OCREATE) )
@@ -91,6 +100,7 @@ bool Bigram::save_db(const char * dbfile){
tmp_db->synchronize();
tmp_db->close();
delete tmp_db;
+#endif
return true;
}
diff --git a/src/storage/phrase_large_table3_kyotodb.cpp b/src/storage/phrase_large_table3_kyotodb.cpp
index b72c717..5eebc11 100644
--- a/src/storage/phrase_large_table3_kyotodb.cpp
+++ b/src/storage/phrase_large_table3_kyotodb.cpp
@@ -80,6 +80,10 @@ bool PhraseLargeTable3::load_db(const char * filename) {
if (!m_db->open("-", BasicDB::OREADER|BasicDB::OWRITER|BasicDB::OCREATE))
return false;
+ if (!m_db->load_snapshot(filename, NULL))
+ return false;
+
+#if 0
/* load db into memory. */
BasicDB * tmp_db = new TreeDB;
if (!tmp_db->open(filename, BasicDB::OREADER))
@@ -90,6 +94,7 @@ bool PhraseLargeTable3::load_db(const char * filename) {
tmp_db->close();
delete tmp_db;
+#endif
return true;
}
@@ -99,6 +104,10 @@ bool PhraseLargeTable3::store_db(const char * new_filename){
if ( ret != 0 && errno != ENOENT)
return false;
+ if (!m_db->dump_snapshot(new_filename, NULL))
+ return false;
+
+#if 0
BasicDB * tmp_db = new TreeDB;
if (!tmp_db->open(new_filename, BasicDB::OWRITER|BasicDB::OCREATE))
return false;
@@ -109,6 +118,7 @@ bool PhraseLargeTable3::store_db(const char * new_filename){
tmp_db->synchronize();
tmp_db->close();
delete tmp_db;
+#endif
return true;
}