kvdb_echo_op.cpp 2.1 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
// Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved.
// 
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#include "demo-serving/op/kvdb_echo_op.h"

namespace baidu {
namespace paddle_serving {
namespace predictor {

using baidu::paddle_serving::predictor::format::KVDBReq;
using baidu::paddle_serving::predictor::format::KVDBRes;
using baidu::paddle_serving::predictor::echo_kvdb_service::Request;
using baidu::paddle_serving::predictor::echo_kvdb_service::Response;

std::shared_ptr<RocksDBWrapper> KVDBEchoOp::db;
int KVDBEchoOp::inference() {
    debug();
}
int KVDBEchoOp::debug() {
   //TODO: implement DEBUG mode
    this->DBInit();
    const Request* req = dynamic_cast<const Request*>(get_request_message());
    Response* res = mutable_data<Response>();
    LOG(INFO) << "Receive request in KVDB echo service: " << req->ShortDebugString();
W
wangjiawei04 已提交
36
    for (size_t i = 0; i < req->reqs_size(); i++) {
37 38 39 40
        auto kvdbreq = req->reqs(i);
        std::string op = kvdbreq.op();
        std::string key = kvdbreq.key();
        std::string val = kvdbreq.value();
W
wangjiawei04 已提交
41
        if (op == "SET") {
42 43 44
            db->Put(key, val);
            KVDBRes* kvdb_value_res = res->mutable_ress()->Add();
            kvdb_value_res -> set_value("OK");
W
wangjiawei04 已提交
45
        } else if (op == "GET") {
46 47 48 49 50 51 52 53 54
            std::string getvalue = db->Get(key);
            KVDBRes* kvdb_value_res = res->mutable_ress()->Add();
            kvdb_value_res -> set_value(getvalue);
        }
    }
    return 0;
}

void KVDBEchoOp::DBInit() {
W
wangjiawei04 已提交
55
    if (db.get() == nullptr) {
56 57 58 59 60 61 62 63
        db = RocksDBWrapper::RocksDBWrapperFactory("kvdb");
    }
}

DEFINE_OP(KVDBEchoOp);
}
}
}