mirror of
https://gitee.com/acl-dev/acl.git
synced 2024-11-29 18:37:41 +08:00
Test using yyjson in pkv.
This commit is contained in:
parent
ccefbdd2b6
commit
9a4b22c1f9
@ -48,8 +48,9 @@ set(src_paths
|
||||
${base_path}
|
||||
${base_path}/action
|
||||
${base_path}/dao
|
||||
${base_path}/dao/rocksdb
|
||||
${base_path}/dao/wt
|
||||
${base_path}/db
|
||||
${base_path}/db/rocksdb
|
||||
${base_path}/db/wt
|
||||
${base_path}/proto
|
||||
)
|
||||
|
||||
@ -93,7 +94,7 @@ endif()
|
||||
set(acl_all ${home_path}/lib_fiber/lib/libfiber_cpp.a ${home_path}/libacl_all.a)
|
||||
set(fiber ${home_path}/lib_fiber/lib/libfiber.a)
|
||||
|
||||
set(lib_all ${acl_all})
|
||||
set(lib_all ${acl_all} -lyyjson)
|
||||
|
||||
if(${HAS_ROCKSDB} MATCHES "YES")
|
||||
find_library(rocksdb NAMES rocksdb PATHS /usr/lib /usr/local/lib)
|
||||
|
@ -7,10 +7,10 @@ else
|
||||
BUILD_ARGS = -DBUILD_WITH_C11=NO
|
||||
endif
|
||||
|
||||
BUILD_ARGS += -DCMAKE_VERBOSE_MAKEFILE=ON
|
||||
#BUILD_ARGS += -DCMAKE_VERBOSE_MAKEFILE=ON
|
||||
#BUILD_ARGS += -DHAS_ROCKSDB=YES
|
||||
#BUILD_ARGS += -DHAS_WT=YES
|
||||
BUILD_ARGS += -DHAS_JEMALLOC=YES
|
||||
#BUILD_ARGS += -DHAS_JEMALLOC=YES
|
||||
|
||||
all:
|
||||
@(mkdir -p build; cd build; cmake ${BUILD_ARGS} ..; make -j 4)
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
#include <vector>
|
||||
#include "proto/redis_coder.h"
|
||||
#include "dao/db.h"
|
||||
#include "db/db.h"
|
||||
|
||||
namespace pkv {
|
||||
|
||||
|
11
app/wizard_demo/pkv/dao/dao_base.h
Normal file
11
app/wizard_demo/pkv/dao/dao_base.h
Normal file
@ -0,0 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
namespace pkv {
|
||||
|
||||
class dao_base {
|
||||
public:
|
||||
dao_base() = default;
|
||||
virtual ~dao_base() = default;
|
||||
};
|
||||
|
||||
} // namespace pkv
|
33
app/wizard_demo/pkv/dao/string_dao.cpp
Normal file
33
app/wizard_demo/pkv/dao/string_dao.cpp
Normal file
@ -0,0 +1,33 @@
|
||||
#include "stdafx.h"
|
||||
#include "string_dao.h"
|
||||
|
||||
namespace pkv {
|
||||
|
||||
string_dao::string_dao() : data_(nullptr) {}
|
||||
|
||||
string_dao::~string_dao() {}
|
||||
|
||||
void string_dao::set_string(const char* data) {
|
||||
data_ = data;
|
||||
}
|
||||
|
||||
bool string_dao::to_string(std::string& out) {
|
||||
yyjson_mut_doc* doc = yyjson_mut_doc_new(NULL);
|
||||
yyjson_mut_val* root = yyjson_mut_obj(doc);
|
||||
yyjson_mut_doc_set_root(doc, root);
|
||||
yyjson_mut_obj_add_str(doc, root, "type", "string");
|
||||
yyjson_mut_obj_add_int(doc, root, "expire", -1);
|
||||
yyjson_mut_obj_add_str(doc, root, "data", data_);
|
||||
const char* data = yyjson_mut_write(doc, 0, NULL);
|
||||
|
||||
if (data == nullptr) {
|
||||
yyjson_mut_doc_free(doc);
|
||||
return false;
|
||||
}
|
||||
|
||||
out.append(data);
|
||||
yyjson_mut_doc_free(doc);
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace pkv
|
20
app/wizard_demo/pkv/dao/string_dao.h
Normal file
20
app/wizard_demo/pkv/dao/string_dao.h
Normal file
@ -0,0 +1,20 @@
|
||||
#pragma once
|
||||
#include <yyjson.h>
|
||||
#include "dao_base.h"
|
||||
|
||||
namespace pkv {
|
||||
|
||||
class string_dao : public dao_base {
|
||||
public:
|
||||
string_dao();
|
||||
~string_dao() override;
|
||||
|
||||
void set_string(const char* data);
|
||||
|
||||
bool to_string(std::string& out);
|
||||
|
||||
private:
|
||||
const char* data_;
|
||||
};
|
||||
|
||||
} // namespace pkv
|
@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "dao/db.h"
|
||||
#include "db/db.h"
|
||||
|
||||
class master_service : public acl::master_fiber {
|
||||
public:
|
||||
|
@ -5,6 +5,7 @@
|
||||
#include "stdafx.h"
|
||||
#include "redis_ocache.h"
|
||||
#include "redis_coder.h"
|
||||
#include "dao/string_dao.h"
|
||||
|
||||
namespace pkv {
|
||||
|
||||
@ -223,6 +224,7 @@ bool test_redis_build() {
|
||||
}
|
||||
|
||||
size_t redis_build_bench(size_t max) {
|
||||
#if 0
|
||||
redis_ocache cache;
|
||||
redis_coder builder(cache);
|
||||
size_t i = 0;
|
||||
@ -233,13 +235,28 @@ size_t redis_build_bench(size_t max) {
|
||||
.create_child().set_string("string", true)
|
||||
.create_child().set_number(-1);
|
||||
builder.create_object().set_status("hello world!");
|
||||
// builder.create_object().set_status("hello world!");
|
||||
// builder.create_object().set_number(-1);
|
||||
// builder.create_object().set_number(-1);
|
||||
builder.create_object().set_status("hello world!");
|
||||
builder.create_object().set_number(-1);
|
||||
builder.create_object().set_number(-1);
|
||||
builder.to_string(buff);
|
||||
builder.clear();
|
||||
}
|
||||
#else
|
||||
size_t i = 0;
|
||||
string_dao dao;
|
||||
|
||||
for (; i < max; i++) {
|
||||
std::string buff;
|
||||
dao.set_string("hello world");
|
||||
if (!dao.to_string(buff)) {
|
||||
printf("to_string error\r\n");
|
||||
break;
|
||||
}
|
||||
if (i == 0) {
|
||||
printf("%s\r\n", buff.c_str());
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return i;
|
||||
}
|
||||
|
||||
|
@ -386,8 +386,16 @@ bool redis_object::to_string(std::string& out) const {
|
||||
#define CRLF "\r\n"
|
||||
#endif
|
||||
|
||||
#define USE_APPEND
|
||||
|
||||
if (!EMPTY(objs_)) {
|
||||
#ifdef USE_APPEND
|
||||
out.append("*").append(std::to_string(objs_.size())).append(CRLF);
|
||||
#else
|
||||
out += "*";
|
||||
out += std::to_string(objs_.size());
|
||||
out += CRLF;
|
||||
#endif
|
||||
|
||||
for (const auto& obj : objs_) {
|
||||
if (!obj->to_string(out)) {
|
||||
@ -400,17 +408,43 @@ bool redis_object::to_string(std::string& out) const {
|
||||
|
||||
switch (type_) {
|
||||
case REDIS_OBJ_STATUS:
|
||||
#ifdef USE_APPEND
|
||||
out.append("+").append(buf_.c_str(), buf_.size()).append(CRLF);
|
||||
#else
|
||||
out += "+";
|
||||
out.append(buf_.c_str(), buf_.size());
|
||||
out += CRLF;
|
||||
#endif
|
||||
break;
|
||||
case REDIS_OBJ_ERROR:
|
||||
#ifdef USE_APPEND
|
||||
out.append("-").append(buf_.c_str(), buf_.size()).append(CRLF);
|
||||
#else
|
||||
out += "-";
|
||||
out.append(buf_.c_str(), buf_.size());
|
||||
out += CRLF;
|
||||
#endif
|
||||
break;
|
||||
case REDIS_OBJ_INTEGER:
|
||||
#ifdef USE_APPEND
|
||||
out.append(":").append(buf_.c_str(), buf_.size()).append(CRLF);
|
||||
#else
|
||||
out += ":";
|
||||
out.append(buf_.c_str(), buf_.size());
|
||||
out += CRLF;
|
||||
#endif
|
||||
break;
|
||||
case REDIS_OBJ_STRING:
|
||||
#ifdef USE_APPEND
|
||||
out.append("$").append(std::to_string(buf_.size())).append(CRLF)
|
||||
.append(buf_.c_str(), buf_.size()).append(CRLF);
|
||||
#else
|
||||
out += "$";
|
||||
out += std::to_string(buf_.size());
|
||||
out += CRLF;
|
||||
out.append(buf_.c_str(), buf_.size());
|
||||
out += CRLF;
|
||||
#endif
|
||||
break;
|
||||
//case acl::REDIS_RESULT_ARRAY:
|
||||
// break;
|
||||
|
Loading…
Reference in New Issue
Block a user