Files
ylib/include/net/qps.hpp
xx ef63cfd6aa 1、删除部分三方库
2、整合ylib为一个lib库
2024-05-26 12:51:32 +08:00

63 lines
1.7 KiB
C++

#pragma once
#include <mutex>
#include "base/define.h"
#include "util/system.h"
namespace ylib
{
namespace network
{
class qps
{
public:
qps()
{
m_record = false;
}
void request(const uint64& size, bool no_count = false)
{
if (m_record == false)
return;
std::unique_lock<std::mutex> guard(m_mutex);
if (no_count == false)
request_sec_count++;
request_sec_size += size;
}
void response(const uint64& size, bool no_count = false)
{
if (m_record == false)
return;
std::unique_lock<std::mutex> guard(m_mutex);
if (no_count == false)
response_sec_count++;
response_sec_size += size;
}
void record(uint32 wait_msec = 1000)
{
request_sec_count = 0;
request_sec_size = 0;
response_sec_count = 0;
response_sec_size = 0;
m_record = true;
system::sleep_msec(wait_msec);
m_record = false;
}
public:
// 每秒请求数
uint64 request_sec_count;
// 每秒请求大小
uint64 request_sec_size;
// 每秒回复数
uint64 response_sec_count;
// 每秒回复大小
uint64 response_sec_size;
private:
std::mutex m_mutex;
// record
bool m_record;
};
}
}