| 102 | // the serialized size. |
| 103 | template <typename RPC, typename T> |
| 104 | Status SetFaststringSidecar(const T& obj, RPC* rpc, int* sidecar_idx, int64_t* length) { |
| 105 | ThriftSerializer serializer(/* compact */ true); |
| 106 | uint8_t* serialized_buf = nullptr; |
| 107 | uint32_t serialized_len = 0; |
| 108 | RETURN_IF_ERROR(serializer.SerializeToBuffer(&obj, &serialized_len, &serialized_buf)); |
| 109 | if (serialized_len > FLAGS_rpc_max_message_size) { |
| 110 | return Status("Serialized sidecar exceeds --rpc_max_message_size."); |
| 111 | } |
| 112 | kudu::faststring sidecar_str; |
| 113 | sidecar_str.assign_copy(serialized_buf, serialized_len); |
| 114 | std::unique_ptr<kudu::rpc::RpcSidecar> rpc_sidecar = |
| 115 | kudu::rpc::RpcSidecar::FromFaststring(std::move(sidecar_str)); |
| 116 | RETURN_IF_ERROR(FromKuduStatus( |
| 117 | rpc->AddOutboundSidecar(move(rpc_sidecar), sidecar_idx), "Failed to add sidecar")); |
| 118 | *length = serialized_len; |
| 119 | return Status::OK(); |
| 120 | } |
| 121 | |
| 122 | } // namespace impala |
no test coverage detected