MCPcopy Create free account
hub / github.com/caozhiyi/CppNet / _DoRead

Method _DoRead

test/rpc/RPCClient.cpp:34–85  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

32}
33
34void CRPCClient::_DoRead(const cppnet::Handle& handle, base::CBuffer* data,
35 uint32_t len, uint32_t err) {
36 if (err != cppnet::CEC_SUCCESS) {
37 base::LOG_ERROR("read data failed! err : %d", err);
38 return;
39 }
40 char recv_buf[8192] = { 0 };
41 int get_len = 8192;
42 int need_len = 0;
43 int recv_len = 0;
44 for (;;) {
45 get_len = data->ReadUntil(recv_buf, 8192, "\r\n\r\n", strlen("\r\n\r\n"), need_len);
46 if (get_len == 0) {
47 break;
48 }
49 std::vector<base::CAny> vec;
50 int type = 0;
51 std::string name;
52 int code = NO_ERROR;
53 if (!_parse_package->ParseType(recv_buf, get_len, type)) {
54 if (_func_call_map.count(name)) {
55 _func_call_map[name](PARAM_TYPE_ERROR, vec);
56 }
57 break;
58 }
59 if (type & FUNCTION_RET) {
60 if (!_parse_package->ParseFuncRet(recv_buf + 2, get_len - 2, code, name, _func_map, vec)) {
61 if (_func_call_map.count(name)) {
62 _func_call_map[name](PARSE_FUNC_ERROR, vec);
63 }
64 break;
65 }
66 if (_func_call_map.count(name)) {
67 _func_call_map[name](code, vec);
68 }
69
70 } else if (type & FUNCTION_INFO) {
71 if (!_parse_package->ParseFuncList(recv_buf + 2, get_len - 2, _func_map)) {
72 if (_func_call_map.count(name)) {
73 _func_call_map[name](PARSE_FUNC_ERROR, vec);
74 }
75 break;
76
77 } else {
78 if (_func_call_map.count(name)) {
79 _func_call_map[name](PARAM_TYPE_ERROR, vec);
80 }
81 break;
82 }
83 }
84 }
85}
86
87void CRPCClient::_DoWrite(const cppnet::Handle& handle, uint32_t len, uint32_t err) {
88 if (err != cppnet::CEC_SUCCESS) {

Callers

nothing calls this directly

Calls 4

ParseTypeMethod · 0.80
ParseFuncRetMethod · 0.80
ParseFuncListMethod · 0.80
ReadUntilMethod · 0.45

Tested by

no test coverage detected