| 104 | return nullptr; |
| 105 | } |
| 106 | void AsyncTableHandler::SyncRpcResponse() { |
| 107 | auto cntl = callback_->GetController(); |
| 108 | auto response = callback_->GetResponse(); |
| 109 | if (!cntl || !response) { |
| 110 | status_.code = hybridse::common::kRpcError; |
| 111 | status_.msg = "rpc controller or response is null"; |
| 112 | LOG(WARNING) << status_.msg; |
| 113 | return; |
| 114 | } |
| 115 | brpc::Join(cntl->call_id()); |
| 116 | if (cntl->Failed()) { |
| 117 | status_ = ::hybridse::base::Status(::hybridse::common::kRpcError, "request error. " + cntl->ErrorText()); |
| 118 | LOG(WARNING) << status_.msg; |
| 119 | return; |
| 120 | } |
| 121 | if (response->code() != 0) { |
| 122 | status_ = ::hybridse::base::Status(::hybridse::common::kResponseError, "request error. " + response->msg()); |
| 123 | LOG(WARNING) << status_.msg; |
| 124 | return; |
| 125 | } |
| 126 | |
| 127 | if (response->row_sizes_size() == 0) { |
| 128 | status_.code = hybridse::common::kResponseError; |
| 129 | status_.msg = "response error: rows empty"; |
| 130 | LOG(WARNING) << status_.msg; |
| 131 | return; |
| 132 | } |
| 133 | size_t buf_offset = 0; |
| 134 | for (int i = 0; i < response->row_sizes_size(); ++i) { |
| 135 | size_t row_size = response->row_sizes(i); |
| 136 | hybridse::codec::Row row; |
| 137 | if (0 != row_size && !codec::DecodeRpcRow(cntl->response_attachment(), buf_offset, row_size, |
| 138 | response->non_common_slices(), &row)) { |
| 139 | status_.code = hybridse::common::kResponseError; |
| 140 | status_.msg = "response error: content decode fail"; |
| 141 | LOG(WARNING) << status_.msg; |
| 142 | return; |
| 143 | } |
| 144 | AddRow(row); |
| 145 | buf_offset += row_size; |
| 146 | } |
| 147 | status_ = hybridse::base::Status::OK(); |
| 148 | return; |
| 149 | } |
| 150 | |
| 151 | AsyncTablesHandler::AsyncTablesHandler() |
| 152 | : hybridse::vm::MemTableHandler("", "", nullptr), |
nothing calls this directly
no test coverage detected