| 194 | : _options(options), _state(state) {} |
| 195 | |
| 196 | void Echo(::google::protobuf::RpcController* controller, |
| 197 | const ::test::EchoRequest* request, |
| 198 | ::test::EchoResponse* response, |
| 199 | ::google::protobuf::Closure* done) override { |
| 200 | brpc::ClosureGuard done_guard(done); |
| 201 | response->set_message(request->message()); |
| 202 | brpc::Controller* cntl = static_cast<brpc::Controller*>(controller); |
| 203 | |
| 204 | brpc::StreamIds response_streams; |
| 205 | ASSERT_EQ(0, brpc::StreamAccept(response_streams, *cntl, &_options)); |
| 206 | ASSERT_EQ(2u, response_streams.size()); |
| 207 | _state->server_first_stream_id = response_streams[0]; |
| 208 | _state->server_extra_stream_id = response_streams[1]; |
| 209 | |
| 210 | bthread_t tid; |
| 211 | ASSERT_EQ(0, bthread_start_background( |
| 212 | &tid, &BTHREAD_ATTR_NORMAL, |
| 213 | SendTwoMessagesOnServerExtraStream, _state)); |
| 214 | _state->server_send_tid = tid; |
| 215 | _state->server_send_started.store(true, std::memory_order_release); |
| 216 | } |
| 217 | |
| 218 | private: |
| 219 | brpc::StreamOptions _options; |
nothing calls this directly
no test coverage detected