Add John MucCullough's simple key/value storage server.
[bluesky.git] / kvstore / kvservice.cc
diff --git a/kvstore/kvservice.cc b/kvstore/kvservice.cc
new file mode 100644 (file)
index 0000000..e241bc9
--- /dev/null
@@ -0,0 +1,55 @@
+#include "kvservice.h"
+#include <iostream>
+
+using namespace std;
+
+namespace kvstore
+{
+
+KeyValueRpcService::KeyValueRpcService(Backend *backend)
+    :_backend(backend)
+{
+}
+
+KeyValueRpcService::~KeyValueRpcService()
+{
+}
+
+void KeyValueRpcService::PutValue(
+                      ::google::protobuf::RpcController* /*controller*/,
+                      const ::kvrpc::Put* request,
+                      ::kvrpc::PutReply* response,
+                      ::google::protobuf::Closure* done)
+{
+    if (_backend->Put(request->key(), request->value()))
+    {
+        response->set_result(kvrpc::SUCCESS);
+    }
+    else
+    {
+        response->set_result(kvrpc::FAILURE);
+    }
+
+    done->Run();
+}
+
+void KeyValueRpcService::GetValue(
+                      ::google::protobuf::RpcController* /*controller*/,
+                      const ::kvrpc::Get* request,
+                      ::kvrpc::GetReply* response,
+                      ::google::protobuf::Closure* done)
+{
+    string value;
+    if (_backend->Get(request->key(), &value))
+    {
+        response->set_result(kvrpc::SUCCESS);
+        response->set_value(value);
+    }
+    else
+    {
+        response->set_result(kvrpc::FAILURE);
+    }
+    done->Run();
+}
+
+}; // namespace kvstore