|
|
|
@ -115,15 +115,16 @@ struct ServerBotStat {
|
|
|
|
struct Response {
|
|
|
|
struct Response {
|
|
|
|
bool ok_;
|
|
|
|
bool ok_;
|
|
|
|
size_t size_;
|
|
|
|
size_t size_;
|
|
|
|
|
|
|
|
td::int64 files_size_;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
void on_event(const Response &answer) {
|
|
|
|
void on_event(const Response &response) {
|
|
|
|
response_count_++;
|
|
|
|
response_count_++;
|
|
|
|
if (answer.ok_) {
|
|
|
|
if (response.ok_) {
|
|
|
|
response_count_ok_++;
|
|
|
|
response_count_ok_++;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
response_count_error_++;
|
|
|
|
response_count_error_++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
response_bytes_ += static_cast<double>(answer.size_);
|
|
|
|
response_bytes_ += static_cast<double>(response.size_);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
struct Request {
|
|
|
|
struct Request {
|
|
|
|
@ -173,6 +174,7 @@ class BotStatActor final : public td::Actor {
|
|
|
|
for (auto &stat : stat_) {
|
|
|
|
for (auto &stat : stat_) {
|
|
|
|
stat.add_event(event, now);
|
|
|
|
stat.add_event(event, now);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
on_event(event);
|
|
|
|
if (!parent_.empty()) {
|
|
|
|
if (!parent_.empty()) {
|
|
|
|
send_closure(parent_, &BotStatActor::add_event<EventT>, event, now);
|
|
|
|
send_closure(parent_, &BotStatActor::add_event<EventT>, event, now);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -183,6 +185,10 @@ class BotStatActor final : public td::Actor {
|
|
|
|
|
|
|
|
|
|
|
|
double get_score(double now);
|
|
|
|
double get_score(double now);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
td::int64 get_active_request_count() const;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
td::int64 get_active_file_upload_bytes() const;
|
|
|
|
|
|
|
|
|
|
|
|
bool is_active(double now) const;
|
|
|
|
bool is_active(double now) const;
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
private:
|
|
|
|
@ -193,6 +199,23 @@ class BotStatActor final : public td::Actor {
|
|
|
|
td::TimedStat<ServerBotStat> stat_[SIZE];
|
|
|
|
td::TimedStat<ServerBotStat> stat_[SIZE];
|
|
|
|
td::ActorId<BotStatActor> parent_;
|
|
|
|
td::ActorId<BotStatActor> parent_;
|
|
|
|
double last_activity_timestamp_ = -1e9;
|
|
|
|
double last_activity_timestamp_ = -1e9;
|
|
|
|
|
|
|
|
td::int64 active_request_count_ = 0;
|
|
|
|
|
|
|
|
td::int64 active_file_upload_bytes_ = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void on_event(const ServerBotStat::Update &update) {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void on_event(const ServerBotStat::Response &response) {
|
|
|
|
|
|
|
|
active_request_count_--;
|
|
|
|
|
|
|
|
active_file_upload_bytes_ -= response.files_size_;
|
|
|
|
|
|
|
|
CHECK(active_request_count_ >= 0);
|
|
|
|
|
|
|
|
CHECK(active_file_upload_bytes_ >= 0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void on_event(const ServerBotStat::Request &request) {
|
|
|
|
|
|
|
|
active_request_count_++;
|
|
|
|
|
|
|
|
active_file_upload_bytes_ += request.files_size_;
|
|
|
|
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
} // namespace telegram_bot_api
|
|
|
|
} // namespace telegram_bot_api
|
|
|
|
|