[Pkg-javascript-commits] [node-leveldown] 284/492: added leveldb.repair() implementation
Andrew Kelley
andrewrk-guest at moszumanska.debian.org
Sun Jul 6 17:14:09 UTC 2014
This is an automated email from the git hooks/post-receive script.
andrewrk-guest pushed a commit to annotated tag rocksdb-0.10.1
in repository node-leveldown.
commit 894b9b147c7ff650a98772e31d2e592f85053505
Author: Rod Vagg <rod at vagg.org>
Date: Sun Mar 24 22:55:47 2013 +1100
added leveldb.repair() implementation
---
src/leveldown.cc | 37 +++++++++++++++++++++++++++++++++++++
src/leveldown_async.cc | 18 ++++++++++++++++++
src/leveldown_async.h | 14 ++++++++++++++
3 files changed, 69 insertions(+)
diff --git a/src/leveldown.cc b/src/leveldown.cc
index 6370906..209119f 100644
--- a/src/leveldown.cc
+++ b/src/leveldown.cc
@@ -45,6 +45,38 @@ v8::Handle<v8::Value> DestroyDB (const v8::Arguments& args) {
return scope.Close(v8::Undefined());
}
+v8::Handle<v8::Value> RepairDB (const v8::Arguments& args) {
+ v8::HandleScope scope;
+
+ if (args.Length() < 2) {
+ LD_THROW_RETURN(repair() requires `location` and `callback` arguments)
+ }
+
+ if (!args[0]->IsString()) {
+ LD_THROW_RETURN(leveldown() requires a location string argument)
+ }
+
+ if (!args[1]->IsFunction()) {
+ LD_THROW_RETURN(leveldown() requires a callback function argument)
+ }
+
+ LD_FROM_V8_STRING(location, v8::Handle<v8::String>::Cast(args[0]))
+
+ v8::Persistent<v8::Function> callback = v8::Persistent<v8::Function>::New(
+ LD_NODE_ISOLATE_PRE
+ v8::Local<v8::Function>::Cast(args[1])
+ );
+
+ RepairWorker* worker = new RepairWorker(
+ location
+ , callback
+ );
+
+ AsyncQueueWorker(worker);
+
+ return scope.Close(v8::Undefined());
+}
+
void Init (v8::Handle<v8::Object> target) {
Database::Init();
leveldown::Iterator::Init();
@@ -58,6 +90,11 @@ void Init (v8::Handle<v8::Object> target) {
, v8::FunctionTemplate::New(DestroyDB)->GetFunction()
);
+ leveldown->Set(
+ v8::String::NewSymbol("repair")
+ , v8::FunctionTemplate::New(RepairDB)->GetFunction()
+ );
+
target->Set(v8::String::NewSymbol("leveldown"), leveldown);
}
diff --git a/src/leveldown_async.cc b/src/leveldown_async.cc
index 4bdae6f..2a09c90 100644
--- a/src/leveldown_async.cc
+++ b/src/leveldown_async.cc
@@ -28,4 +28,22 @@ void DestroyWorker::Execute () {
status = leveldb::DestroyDB(location, options);
}
+/** REPAIR WORKER **/
+
+RepairWorker::RepairWorker (
+ char* location
+ , v8::Persistent<v8::Function> callback
+) : AsyncWorker(NULL, callback)
+ , location(location)
+{};
+
+RepairWorker::~RepairWorker () {
+ delete location;
+}
+
+void RepairWorker::Execute () {
+ leveldb::Options options;
+ status = leveldb::RepairDB(location, options);
+}
+
} // namespace leveldown
diff --git a/src/leveldown_async.h b/src/leveldown_async.h
index d860f51..6033769 100644
--- a/src/leveldown_async.h
+++ b/src/leveldown_async.h
@@ -26,6 +26,20 @@ private:
char* location;
};
+class RepairWorker : public AsyncWorker {
+public:
+ RepairWorker (
+ char* location
+ , v8::Persistent<v8::Function> callback
+ );
+
+ virtual ~RepairWorker ();
+ virtual void Execute ();
+
+private:
+ char* location;
+};
+
} // namespace leveldown
#endif
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-leveldown.git
More information about the Pkg-javascript-commits
mailing list