Initial commit

This commit is contained in:
2026-04-03 00:22:39 -05:00
commit eca1e8c458
945 changed files with 218160 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
/*
ZNetBandwidthMeter.hpp
Author: Patrick Baggett <ptbaggett@762studios.com>
Created: 7/10/2013
Purpose:
** NOT PART OF PUBLIC SDK **
This class is not part of the public SDK; its fields and methods are not present
in the documentation and cannot be guaranteed in future revisions.
** NOT PART OF PUBLIC SDK **
Bandwidth metering using a simple token bucket algorithm. A single value is
metered, so a incoming / outgoing each need an instance.
License:
Copyright 2013, 762 Studios
*/
#pragma once
#ifndef _ZNETBANDWIDTHMETER_HPP
#define _ZNETBANDWIDTHMETER_HPP
#include <pstdint.h>
class ZNetBandwidthMeter
{
public:
/* Sets the new bandwidth limit */
void SetLimit(uint32_t newLimit);
/* Resets the meter for reuse. Takes the current time */
void Reset(uint64_t newStartTime);
/* Try to allocate a given number of bytes */
bool TryAllocate(uint32_t bytes);
/* Update the token bucket */
void Update(uint64_t newTime);
/* Get the bandwidth limit */
uint32_t GetLimit() const { return limit; }
/* Get the available instantaneous bandwidth */
uint32_t GetAvailable() const { return tokens; }
private: //Should be POD basically
uint64_t lastTime; //The last time this was updated
uint32_t limit; //The bandwidth limit, in bytes per second
uint32_t tokens; //The available bandwidth within this 1 second timeframe
};
#endif