[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [ooni-probe/master] Outline the rate limiting abstract class (#7852)
commit 6f5da8e07d7cbc357ba4a15f7a65d3cf57925a11
Author: Arturo Filastò <art@xxxxxxxxx>
Date: Thu Jan 10 16:20:29 2013 +0100
Outline the rate limiting abstract class (#7852)
Classes that impose constraints on timeouts and issue rate go here.
---
ooni/ratelimiting.py | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 68 insertions(+), 0 deletions(-)
diff --git a/ooni/ratelimiting.py b/ooni/ratelimiting.py
new file mode 100644
index 0000000..986cf82
--- /dev/null
+++ b/ooni/ratelimiting.py
@@ -0,0 +1,68 @@
+class RateLimiter(object):
+ """
+ The abstract class that imposes limits over how measurements are scheduled,
+ how retries are handled and when we should be giving up on a certain
+ measurement.
+ """
+ @property
+ def timeout(self):
+ """
+ After what timeout a certain test should be considered to have failed
+ and attempt a retry if the maximum retry has not been reached.
+ """
+ raise NotImplemented
+
+ @property
+ def maxTimeout(self):
+ """
+ This is the maximum value that timeout can reach.
+ """
+ raise NotImplemented
+
+ @property
+ def concurrency(self):
+ """
+ How many concurrent requests should happen at the same time.
+ """
+ raise NotImplemented
+
+ def timedOut(self, measurement):
+ raise NotImplemented
+
+ def completed(self, measurement):
+ raise NotImplemented
+
+ def failed(self, measurement):
+ raise NotImplemented
+
+class StaticRateLimiter(RateLimiter):
+ """
+ This is a static ratelimiter that returns constant values.
+ """
+ @property
+ def timeout(self):
+ return 10
+
+ @property
+ def maxTimeout(self):
+ return 5 * 60
+
+ @property
+ def concurrency(self):
+ return 10
+
+ def timedOut(self, measurement):
+ pass
+
+ def completed(self, measurement):
+ pass
+
+ def failed(self, measurement, failure):
+ pass
+
+class TimeoutRateLimiter(RateLimiter):
+ pass
+
+class BandwidthRateLimiter(RateLimiter):
+ pass
+
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits