summaryrefslogtreecommitdiff
path: root/discord_rpc/util/backoff.py
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2024-02-05 11:17:23 -0300
committerJesusaves <cpntb1@ymail.com>2024-02-05 11:17:23 -0300
commit29ffe5de3c308013742b5bd97f7d75b09bd3b427 (patch)
tree7199cecaf204701770de171d007e561589b19762 /discord_rpc/util/backoff.py
parentf6b8c0c64757c73b6f2063d3a6d93ce2f8f527d5 (diff)
downloadtkinter-29ffe5de3c308013742b5bd97f7d75b09bd3b427.tar.gz
tkinter-29ffe5de3c308013742b5bd97f7d75b09bd3b427.tar.bz2
tkinter-29ffe5de3c308013742b5bd97f7d75b09bd3b427.tar.xz
tkinter-29ffe5de3c308013742b5bd97f7d75b09bd3b427.zip
Some button aligning, a CI template, and Discord RPC
Diffstat (limited to 'discord_rpc/util/backoff.py')
-rw-r--r--discord_rpc/util/backoff.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/discord_rpc/util/backoff.py b/discord_rpc/util/backoff.py
new file mode 100644
index 0000000..650a871
--- /dev/null
+++ b/discord_rpc/util/backoff.py
@@ -0,0 +1,35 @@
+from __future__ import absolute_import
+import random
+from .types import Int32, Int64
+
+
+class Backoff(object):
+ _min_amt = None
+ _max_amt = None
+ _current = None
+ _fails = Int32()
+
+ def __init__(self, min_amt, max_amt):
+ min_amt = max(min_amt, 1)
+ max_amt = max(max_amt, 1)
+ self._min_amt = Int64(min_amt)
+ self._max_amt = Int64(max_amt)
+ self._current = Int64(min_amt)
+
+ def reset(self):
+ self._fails = Int32(0)
+ self._current = self._min_amt.get_copy()
+
+ def next_delay(self):
+ self._fails += 1
+ delay = Int64(self._current.get_number() * 2.0 * random.random())
+ self._current = Int64(min(self._current.get_number() + delay.get_number(), self._max_amt))
+ return self._current
+
+ @property
+ def fails(self):
+ return self._fails
+
+ @property
+ def current(self):
+ return self._current