summaryrefslogtreecommitdiff
path: root/fakegeld.py
diff options
context:
space:
mode:
authorherkulessi <git@herkulessi.de>2026-03-31 23:43:13 +0200
committerherkulessi <git@herkulessi.de>2026-03-31 23:43:13 +0200
commit9023f3fce9765abdb8d70eeb4a1d5ee1aa2daaa7 (patch)
treedbfd71095fdbc56e770786be247065aed9890e8c /fakegeld.py
Bezahlommat 2.0 initial commit oder so
Diffstat (limited to 'fakegeld.py')
-rw-r--r--fakegeld.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/fakegeld.py b/fakegeld.py
new file mode 100644
index 0000000..b0dae4f
--- /dev/null
+++ b/fakegeld.py
@@ -0,0 +1,50 @@
+import threading
+import os
+import time
+
+TIMEOUT = 30
+
+class MoneyTransaction:
+ def __init__(self, end_callback, add_money_callback) -> None:
+ self.end_callback = end_callback
+ self.add_money_callback = add_money_callback
+ self.lock = threading.Lock()
+ self.lock.acquire_lock(blocking=True)
+ self.timer = None
+ self.timer_lock = threading.Lock()
+
+ def __end_callback(self, _ = None):
+ print("End Callback")
+ self.end_callback()
+ with self.timer_lock:
+ if self.timer is not None:
+ self.timer.cancel()
+ self.timer = None
+ self.lock.release_lock()
+
+ def start(self):
+ print("Start Transaction")
+ with self.timer_lock:
+ self.timer = threading.Timer(TIMEOUT, self.__end_callback) # create Timeout
+ self.timer.start()
+ try:
+ os.mkfifo("/tmp/fakegeld")
+ except Exception as e:
+ print(e)
+ threading.Thread(target = self.__loop)
+ def __loop(self):
+ f = open("/tmp/money", "r")
+ while True:
+ time.sleep(0.1)
+ line = f.readline()
+ if line == "": continue
+ print("read '%s'" % line)
+ try:
+ amount = float(line)
+ print("got amount %s" % amount)
+ self.add_money_callback(amount)
+ except Exception as e:
+ print(e)
+
+ def stop(self):
+ self.__end_callback()