diff options
| author | 2023-05-02 23:30:19 +0800 | |
|---|---|---|
| committer | 2023-05-02 23:30:19 +0800 | |
| commit | dfa97c9d24b8124ca38ec5eb605cde932cd6ea78 (patch) | |
| tree | 470a8bfd1960964b8c9724c19de876cf52cf60c3 /tests/test.py | |
| parent | 45c49007ee01143ad26899751b856658321cd3ae (diff) | |
| download | HydroRoll-dfa97c9d24b8124ca38ec5eb605cde932cd6ea78.tar.gz HydroRoll-dfa97c9d24b8124ca38ec5eb605cde932cd6ea78.zip | |
Diffstat (limited to 'tests/test.py')
| -rw-r--r-- | tests/test.py | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/tests/test.py b/tests/test.py new file mode 100644 index 0000000..8c3807b --- /dev/null +++ b/tests/test.py @@ -0,0 +1,77 @@ +import threading
+import pickle
+import os
+
+
+class ConfigManager:
+ def __init__(self, filename):
+ self.lock = threading.RLock()
+ self.filename = filename
+ try:
+ with open(filename, 'rb') as f:
+ self.data = pickle.load(f)
+ except FileNotFoundError:
+ self.data = {}
+
+ self.properties = {}
+ self.apis = {}
+
+ def load(self):
+ with self.lock:
+ try:
+ with open(self.filename, 'rb') as f:
+ self.data = pickle.load(f)
+ self.properties.update(self.data)
+ except FileNotFoundError:
+ self.data = {}
+
+ def save(self):
+ with self.lock:
+ try:
+ with open(self.filename, 'wb') as f:
+ # 将self.properties字典中的内容合并至self.data字典中
+ for k, v in self.properties.items():
+ self.data[k] = v
+ # 将self.apis字典中的函数状态保存至self.data字典中
+ for k, v in self.apis.items():
+ if v is not None:
+ self.data[k] = v
+ pickle.dump(self.data, f)
+ except Exception as e:
+ print('Error saving config data:', repr(e))
+ raise
+
+ def register_property(self, name, default_value):
+ self.properties[name] = default_value
+
+ def getter(self, default_value=default_value):
+ with self.lock:
+ return self.data.get(name, default_value)
+
+ def setter(self, value):
+ with self.lock:
+ self.data[name] = value
+
+ setattr(ConfigManager, name, property(getter, setter))
+
+ def register_api(self, name, func, default_value=None):
+ self.apis[name] = default_value
+
+ def wrapper(*args, **kwargs):
+ with self.lock:
+ return func(*args, **kwargs)
+
+ setattr(ConfigManager, name, wrapper)
+
+
+c = ConfigManager("test.dat")
+
+# c.register_property("bot_off_list", [999, 777])
+# def send_message(self, message):
+# print("Sending message:", message)
+
+# c.register_api("send_message", send_message, default_value="Hello, world!")
+
+# c.save()
+c.load()
+print(c.properties,c.properties['bot_off_list'],c.apis)
|
