Go to the documentation of this file.
28 #include "absl/memory/memory.h"
37 #include "src/proto/grpc/testing/benchmark_service.grpc.pb.h"
60 const std::shared_ptr<Channel>&
ch) {
61 return BenchmarkService::NewStub(
ch);
65 :
public ClientImpl<BenchmarkService::Stub, SimpleRequest> {
77 config.client_channels() *
config.outstanding_rpcs_per_channel();
111 std::vector<std::unique_ptr<CallbackClientRpcContext>>
ctx_;
150 for (
int i = 0;
i <
config.outstanding_rpcs_per_channel();
i++) {
176 if (
ctx_[vector_idx]->alarm_ ==
nullptr) {
177 ctx_[vector_idx]->alarm_ = absl::make_unique<Alarm>();
179 ctx_[vector_idx]->alarm_->Set(next_issue_time,
180 [
this, t, vector_idx](
bool ) {
191 ctx_[vector_idx]->stub_->async()->UnaryCall(
197 entry.set_value((UsageTimer::Now() - start) * 1e9);
200 t->UpdateHistogram(&entry);
204 NotifyMainThreadOfThreadCompletion();
207 ctx_[vector_idx] = absl::make_unique<CallbackClientRpcContext>(
208 ctx_[vector_idx]->stub_);
210 ScheduleRpc(t, vector_idx);
222 for (
int i = 0;
i <
config.outstanding_rpcs_per_channel();
i++) {
258 std::unique_ptr<CallbackClientRpcContext>
ctx)
262 ctx_->stub_->async()->StreamingCall(&(
ctx_->context_),
this);
298 ctx_->alarm_->Set(next_issue_time, [
this](
bool ) {
313 ctx_ = absl::make_unique<CallbackClientRpcContext>(
ctx_->stub_);
322 if (
ctx_->alarm_ ==
nullptr) {
323 ctx_->alarm_ = absl::make_unique<Alarm>();
325 ctx_->alarm_->Set(next_issue_time,
335 std::unique_ptr<CallbackClientRpcContext>
ctx_;
357 reactor_[vector_idx]->set_thread_ptr(t);
358 reactor_[vector_idx]->ScheduleRpc();
366 std::vector<std::unique_ptr<CallbackStreamingPingPongReactor>>
reactor_;
372 switch (
config.rpc_type()) {
376 return std::unique_ptr<Client>(
378 case STREAMING_FROM_CLIENT:
379 case STREAMING_FROM_SERVER:
380 case STREAMING_BOTH_WAYS:
const int messages_per_stream_
void set_status(int status)
~CallbackStreamingClient() override
grpc_http_response response_
gpr_timespec NextIssueTime(int thread_idx)
#define GPR_TIMER_SCOPE(tag, important)
ClientBidiReactor is the interface for a bidirectional streaming RPC.
std::unique_ptr< Alarm > alarm_
int messages_per_stream()
void InitThreadFuncImpl(size_t) override
~CallbackStreamingPingPongClient() override
void InitThreadFuncImpl(size_t) override
std::vector< std::unique_ptr< CallbackStreamingPingPongReactor > > reactor_
bool ThreadFuncImpl(Client::Thread *t, size_t thread_idx) override
void OnWriteDone(bool ok) override
const RequestType * request()
void SetupLoadTest(const ClientConfig &config, size_t num_threads)
CallbackStreamingPingPongClient(const ClientConfig &config)
void StartWrite(const SimpleRequest *req)
~CallbackUnaryClient() override
void IssueUnaryCallbackRpc(Thread *t, size_t vector_idx)
CallbackStreamingClient(const ClientConfig &config)
virtual bool ThreadFuncImpl(Thread *t, size_t thread_idx)=0
CallbackStreamingPingPongClientImpl(const ClientConfig &config)
static std::unique_ptr< BenchmarkService::Stub > BenchmarkStubCreator(const std::shared_ptr< Channel > &ch)
CallbackClientRpcContext(BenchmarkService::Stub *stub)
CallbackUnaryClient(const ClientConfig &config)
void set_thread_ptr(Client::Thread *ptr)
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
void StartThreads(size_t num_threads)
CallbackStreamingPingPongReactor(CallbackStreamingPingPongClient *client, std::unique_ptr< CallbackClientRpcContext > ctx)
~CallbackClientRpcContext()
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
CallbackClient(const ClientConfig &config)
Client::Thread * thread_ptr_
std::mutex next_issue_time_mu_
~CallbackClient() override
size_t total_outstanding_rpcs_
void DestroyMultithreading() final
std::condition_variable shutdown_cv_
CallbackStreamingPingPongClient * client_
void StartRead(SimpleResponse *resp)
std::vector< std::unique_ptr< CallbackClientRpcContext > > ctx_
BenchmarkService::Stub * stub_
gpr_timespec NextRPCIssueTime()
std::unique_ptr< CallbackClientRpcContext > ctx_
void OnDone(const Status &s) override
std::vector< ClientChannelInfo > channels_
static volatile int num_threads
void OnReadDone(bool ok) override
int NumThreads(const ClientConfig &config)
void ThreadFunc(size_t thread_idx, Thread *t) override
void UpdateHistogram(HistogramEntry *entry)
std::atomic_flag writes_done_started_
void NotifyMainThreadOfThreadCompletion()
std::unique_ptr< Client > CreateCallbackClient(const ClientConfig &config)
virtual void InitThreadFuncImpl(size_t thread_idx)=0
void ScheduleRpc(Thread *t, size_t vector_idx)
~CallbackStreamingPingPongClientImpl() override
if(p->owned &&p->wrapped !=NULL)
void AddHistogramEntry(double start, bool ok, Thread *thread_ptr)
bool ThreadFuncImpl(Thread *t, size_t thread_idx) override
grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:55