1 #ifndef SOTA_CLIENT_TOOLS_RATE_CONTROLLER_H_
2 #define SOTA_CLIENT_TOOLS_RATE_CONTROLLER_H_
18 using clock = std::chrono::steady_clock;
23 void RequestCompleted(clock::time_point start_time, clock::time_point end_time,
bool succeeded);
25 int MaxConcurrency()
const;
27 clock::duration GetSleepTime()
const;
29 bool ServerHasFailed()
const;
36 static const clock::duration kMaxSleepTime;
42 static const clock::duration kInitialSleepTime;
44 const int concurrency_cap_;
51 clock::time_point last_concurrency_update_;
52 int max_concurrency_{1};
53 clock::duration sleep_time_{0};
55 void CheckInvariants()
const;
58 #endif // SOTA_CLIENT_TOOLS_RATE_CONTROLLER_H_