Skip to content

Commit

Permalink
tidy(jsonrpc):1.7.10, 修复Rpc的函数名,并添加注释
Browse files Browse the repository at this point in the history
  • Loading branch information
hevake committed Jan 30, 2024
1 parent c83d113 commit 5b4278d
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 17 deletions.
12 changes: 6 additions & 6 deletions modules/jsonrpc/rpc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,22 +78,22 @@ void Rpc::request(const std::string &method, const Json &js_params, RequestCallb
proto_->sendRequest(id, method, js_params);
}

void Rpc::request(const std::string &method, const Json &js_params)
void Rpc::request(const std::string &method, RequestCallback &&cb)
{
request(method, js_params, nullptr);
request(method, Json(), std::move(cb));
}

void Rpc::request(const std::string &method, RequestCallback &&cb)
void Rpc::notify(const std::string &method, const Json &js_params)
{
request(method, Json(), std::move(cb));
request(method, js_params, nullptr);
}

void Rpc::request(const std::string &method)
void Rpc::notify(const std::string &method)
{
request(method, Json(), nullptr);
}

void Rpc::registeService(const std::string &method, ServiceCallback &&cb)
void Rpc::addService(const std::string &method, ServiceCallback &&cb)
{
method_services_[method] = std::move(cb);
}
Expand Down
30 changes: 25 additions & 5 deletions modules/jsonrpc/rpc.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,25 @@ class Proto;

class Rpc {
public:
/**
* 收到对端回复的回调函数
*
* \param errcode 错误码,= 0 表示没有错误
* \param js_result 回复的结果
*/
using RequestCallback = std::function<void(int errcode, const Json &js_result)>;

/**
* 收到对端请求时的回调函数
*
* \param id 请求的id(用于异步回复使用)
* \param js_params 请求的参数
* \param errcode 将要回复的错误码,= 0 表示没有错误(仅同步回复有效)
* \param js_result 将要回复的结果,只有在 errcode == 0 时才会有效(仅同步回复有效)
*
* \return true 同步回复:在函数返回后自动回复,根据errcode与js_result进行回复
* \return false 异步回复:不在函数返回后自动回复,而是在稍候通过调respond()进行回复
*/
using ServiceCallback = std::function<bool(int id, const Json &js_params, int &errcode, Json &js_result)>;

public:
Expand All @@ -44,14 +62,16 @@ class Rpc {
bool initialize(Proto *proto, int timeout_sec = 30);
void cleanup();

//! 发送请求或消息,如果cb==nullptr,则是消息
//! 添加方法被调用时的回调函数
void addService(const std::string &method, ServiceCallback &&cb);

//! 发送请求(需要回复的)
void request(const std::string &method, const Json &js_params, RequestCallback &&cb);
void request(const std::string &method, const Json &js_params);
void request(const std::string &method, RequestCallback &&cb);
void request(const std::string &method);

//! 注册当方法被调用时回调什么
void registeService(const std::string &method, ServiceCallback &&cb);
//! 发送通知(不需要回复的)
void notify(const std::string &method, const Json &js_params);
void notify(const std::string &method);

//! 发送异步回复
void respond(int id, int errcode, const Json &js_result);
Expand Down
10 changes: 5 additions & 5 deletions modules/jsonrpc/rpc_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ TEST_F(RpcTest, SendRequestNormally) {
Json js_rsp_result = { {"r", "aabbcc"} };

bool is_service_invoke = false;
rpc_b.registeService("A",
rpc_b.addService("A",
[&] (int id, const Json &js_params, int &errcode, Json &js_result) {
EXPECT_EQ(js_params, js_req_params);
errcode = 0;
Expand Down Expand Up @@ -114,7 +114,7 @@ TEST_F(RpcTest, SendMessageNormally) {
Json js_req_params = { {"a", 12}, {"b", "test jsonrpc"} };

bool is_service_invoke = false;
rpc_b.registeService("B",
rpc_b.addService("B",
[&] (int id, const Json &js_params, int &, Json &) {
EXPECT_EQ(id, 0);
EXPECT_EQ(js_params, js_req_params);
Expand All @@ -125,7 +125,7 @@ TEST_F(RpcTest, SendMessageNormally) {

loop->run(
[&] {
rpc_a.request("B", js_req_params);
rpc_a.notify("B", js_req_params);
}
);
loop->exitLoop(std::chrono::milliseconds(10));
Expand All @@ -136,7 +136,7 @@ TEST_F(RpcTest, SendMessageNormally) {

TEST_F(RpcTest, SendMessageNoService) {
bool is_service_invoke = false;
rpc_b.registeService("B",
rpc_b.addService("B",
[&] (int id, const Json &, int &, Json &) {
is_service_invoke = true;
UNUSED_VAR(id);
Expand All @@ -146,7 +146,7 @@ TEST_F(RpcTest, SendMessageNoService) {

loop->run(
[&] {
rpc_a.request("A");
rpc_a.notify("A");
}
);
loop->exitLoop(std::chrono::milliseconds(10));
Expand Down
2 changes: 1 addition & 1 deletion version.mk
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# TBOX版本号
TBOX_VERSION_MAJOR := 1
TBOX_VERSION_MINOR := 7
TBOX_VERSION_REVISION := 9
TBOX_VERSION_REVISION := 10

0 comments on commit 5b4278d

Please sign in to comment.