电信入库添加EventMesh.PY文件
authorDXY <1731678236@qq.com>
Fri, 17 May 2024 02:22:39 +0000 (10:22 +0800)
committerDXY <1731678236@qq.com>
Fri, 17 May 2024 02:22:39 +0000 (10:22 +0800)
code/sdk/drivers/peripheral/slip/cat1Service/pyscript/EventMesh.py [new file with mode: 0644]

diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/EventMesh.py b/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/EventMesh.py
new file mode 100644 (file)
index 0000000..a380202
--- /dev/null
@@ -0,0 +1,85 @@
+import _thread
+import usys
+import versions
+import ql_fs
+
+class EventStore(object):
+    def __init__(self):
+        self.map = dict()
+        self.log = None
+        self.__filters = []
+
+    def add_filter(self, flt):
+        self.__filters.append(flt)
+
+    def append(self, event, cb):
+        self.map[event] = cb
+
+    def fire_async(self, event, msg,thread_size):
+        if event in self.map:
+            #print("fire_async:thread_size:{}".format(thread_size))
+            if thread_size != None:
+                _thread.stack_size(thread_size)
+                #print("fire_async:thread_size:{}".format(thread_size))
+            _thread.start_new_thread(self.map[event], (event, msg))
+            if thread_size != None:
+                _thread.stack_size(8*1024)
+            if self.log:
+                self.log.info("ASYNC executed (event) -> {} (params) -> {} (result) -> {}".format(event, msg, None))
+
+    def fire_sync(self, event, msg):
+        res = None
+        try:
+            if event in self.map:
+                res = self.map[event](event, msg)
+        except Exception as e:
+            usys.print_exception(e)
+            if self.log:
+                self.log.info("ERROR executed (event) -> {} (params) -> {} (result) -> {}".format(event, msg, res))
+        if event not in self.__filters:
+            if self.log:
+                self.log.info("SYNC executed (event) -> {} (params) -> {} (result) -> {}".format(event, msg, res))
+        return res
+
+
+event_store = EventStore()
+
+
+def subscribe(event, cb):
+    """
+    subscribe event and cb
+    """
+    return event_store.append(event, cb)
+
+
+def publish(event, msg=None):
+    """
+    publish event and msg
+    """
+    return publish_sync(event, msg)
+
+
+def publish_async(event, msg=None,thread_size = None):
+    """
+    异步发送
+    """
+    return event_store.fire_async(event, msg,thread_size)
+
+
+def publish_sync(event, msg=None):
+    """
+    同步发送
+    """
+    return event_store.fire_sync(event, msg)
+
+
+def set_log(log_adapter):
+    event_store.log = log_adapter
+
+
+def add_filter(flt):
+    event_store.add_filter(flt)
+
+
+
+