IntervalBudget主要用于按照一定的碼率控制數(shù)據(jù)在時(shí)間上的分配,保存著這波發(fā)送應(yīng)該有多少資源要發(fā)送,實(shí)際上他并不能控制這一波能發(fā)送多少,只能控制如果上N波發(fā)送的數(shù)據(jù)過多的話,把這一波的數(shù)據(jù)消耗完了,那么這一波就不發(fā)送了,
主要接口:
void IncreaseBudget(int64_t delta_time_ms):每次發(fā)送數(shù)據(jù)時(shí),計(jì)算距離上次發(fā)送的時(shí)間間隔,結(jié)果乘以碼率就是這段時(shí)間內(nèi)新增的資源,如果上一次發(fā)多了,就用這次的資源補(bǔ)上,但是如果上一次發(fā)少了,這次不會(huì)過多發(fā)。
void UseBudget(size_t bytes):這一波消耗了多少資源,最后剩下的資源會(huì)有一個(gè)極限,不能過度消耗500ms的資源
size_t bytes_remaining() const:這一波過后還剩下多少資源