Skip to content

Commit 576ff8c

Browse files
authored
[coro_rpc][go example]go example enable rdma (#961)
1 parent 284d513 commit 576ff8c

File tree

3 files changed

+23
-10
lines changed

3 files changed

+23
-10
lines changed

src/coro_rpc/examples/base_examples/coro_rpc_lib/coro_rpc.cpp

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,14 @@ rpc_result wait_response_finish(void *p) {
5757
return rpc_result{0, buf, 0};
5858
}
5959

60-
void *start_rpc_server(char *addr, int parallel) {
60+
void *start_rpc_server(char *addr, int parallel, bool enable_ib) {
6161
auto server = std::make_unique<coro_rpc::coro_rpc_server>(
6262
parallel, addr, std::chrono::seconds(600));
6363
server->register_handler<ylt_load_service>();
64+
#ifdef YLT_ENABLE_IBV
65+
if (enable_ib)
66+
server->init_ibv();
67+
#endif
6468
auto res = server->async_start();
6569
if (res.hasResult()) {
6670
ELOG_ERROR << "start server failed";
@@ -79,12 +83,20 @@ void stop_rpc_server(void *server) {
7983
}
8084

8185
// rpc client
82-
void *create_client_pool(char *addr, int req_timeout_sec) {
86+
void *create_client_pool(char *addr, int req_timeout_sec, bool enable_ib) {
8387
std::vector<std::string_view> hosts{std::string_view(addr)};
88+
coro_io::client_pool<coro_rpc::coro_rpc_client>::pool_config pool_conf{};
89+
#ifdef YLT_ENABLE_IBV
90+
if (enable_ib) {
91+
coro_io::ibverbs_config ib_conf{};
92+
pool_conf.client_config.socket_config = ib_conf;
93+
}
94+
#endif
95+
pool_conf.client_config.request_timeout_duration =
96+
std::chrono::seconds{req_timeout_sec};
97+
8498
auto ld = coro_io::load_balancer<coro_rpc::coro_rpc_client>::create(
85-
hosts, {.pool_config{.client_config = {
86-
.request_timeout_duration =
87-
std::chrono::seconds{req_timeout_sec}}}});
99+
hosts, {pool_conf});
88100
auto ld_ptr = std::make_unique<decltype(ld)>(std::move(ld));
89101
return ld_ptr.release();
90102
}

src/coro_rpc/examples/base_examples/coro_rpc_lib/coro_rpc.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@ extern void load_service(void *ctx, uint64_t req_id);
1717
extern void *response_msg(void *ctx, char *msg, uint64_t size);
1818
extern void response_error(void *ctx, uint16_t err_code, const char *err_msg);
1919
extern rpc_result wait_response_finish(void *p);
20-
extern void *start_rpc_server(char *addr, int parallel);
20+
extern void *start_rpc_server(char *addr, int parallel, bool enable_ib);
2121
extern void stop_rpc_server(void *server);
2222

23-
extern void *create_client_pool(char *addr, int req_timeout_sec);
23+
extern void *create_client_pool(char *addr, int req_timeout_sec,
24+
bool enable_ib);
2425
extern void free_client_pool(void *pool);
2526
extern rpc_result load(void *pool, uint64_t req_id, char *dest,
2627
uint64_t dest_len);

src/coro_rpc/examples/base_examples/go_example/test_rpc.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import(
99
/*
1010
#cgo CXXFLAGS: -std=c++20
1111
#cgo CFLAGS: -I../coro_rpc_lib
12-
#cgo LDFLAGS: -L./ -lcoro_rpc -lm -lstdc++
12+
#cgo LDFLAGS: -L./ -lcoro_rpc -lm -lstdc++ -libverbs
1313
#include "coro_rpc.h"
1414
*/
1515
import "C"
@@ -54,7 +54,7 @@ func load_service(ctx unsafe.Pointer, req_id C.uint64_t) {
5454

5555
func test_client(host string, len int) {
5656
peer := C.CString(host)
57-
pool := C.create_client_pool(peer, C.int(30))
57+
pool := C.create_client_pool(peer, C.int(30), C.bool(true))
5858

5959
outbuf := make([]byte, len)
6060
for i := 0; i < 3; i++ {
@@ -90,7 +90,7 @@ func main() {
9090
flag.Parse()
9191
fmt.Println(*addr, "thread number,", *thds, ", response data len:", *resp_len)
9292
g_resp_buf = make([]byte, *resp_len)
93-
var server = C.start_rpc_server(C.CString(*addr), 96)
93+
var server = C.start_rpc_server(C.CString(*addr), 96, C.bool(true))
9494
init_response_buf()
9595

9696
// var quit1 string

0 commit comments

Comments
 (0)