00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef NEWNET_RATELIMITER_H
00021 #define NEWNET_RATELIMITER_H
00022
00023 #include "nnobject.h"
00024
00025 namespace NewNet
00026 {
00028
00031 class RateLimiter : public Object
00032 {
00033 public:
00035
00037 RateLimiter();
00038
00039 #ifndef DOCYGEN_UNDOCUMENTED
00040 ~RateLimiter();
00041 #endif // DOXYGEN_UNDOCUMENTED
00042
00044
00047 ssize_t limit() const
00048 {
00049 return m_Limit;
00050 }
00051
00053
00056 void setLimit(ssize_t limit)
00057 {
00058 m_Limit = limit;
00059 }
00060
00062
00065 void transferred(ssize_t bytes);
00066
00068
00073 long nextWindow();
00074
00075 private:
00076
00077 void flush();
00078
00079 ssize_t m_Limit;
00080
00081 #ifndef DOXYGEN_UNDOCUMENTED
00082
00083 struct Data;
00084 struct Data * m_Data;
00085 #endif // DOXYGEN_UNDOCUMENTED
00086 };
00087 }
00088
00089 #endif // NEWNET_RATELIMITER_H