Skip to content

Commit d63aa9b

Browse files
committed
Initial commit
0 parents  commit d63aa9b

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

EventMesh.py

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import _thread
2+
import usys
3+
4+
5+
class EventStore(object):
6+
def __init__(self):
7+
self.map = dict()
8+
self.log = None
9+
self.__filters = []
10+
11+
def add_filter(self, flt):
12+
self.__filters.append(flt)
13+
14+
def append(self, event, cb):
15+
self.map[event] = cb
16+
17+
def fire_async(self, event, msg):
18+
if event in self.map:
19+
_thread.start_new_thread(self.map[event], (event, msg))
20+
if self.log:
21+
if event not in self.__filters:
22+
self.log.info(
23+
"ASYNC executed (event) [ NO STATE] -> {} (params) -> {} (result) -> {}".format(event, msg, None))
24+
25+
def fire_sync(self, event, msg):
26+
res = None
27+
try:
28+
if event in self.map:
29+
res = self.map[event](event, msg)
30+
except Exception as e:
31+
if self.log:
32+
if event not in self.__filters:
33+
self.log.info(
34+
"SYNC executed (event) [ FAILED ] -> {} (params) -> {} (result) -> {}".format(event, msg, res))
35+
usys.print_exception(e)
36+
if self.log:
37+
if event not in self.__filters:
38+
self.log.info(
39+
"SYNC executed (event) [ SUCCESS ]-> {} (params) -> {} (result) -> {}".format(event, msg, res))
40+
return res
41+
42+
43+
event_store = EventStore()
44+
45+
46+
def subscribe(event, cb):
47+
"""
48+
subscribe event and cb
49+
"""
50+
return event_store.append(event, cb)
51+
52+
53+
def publish(event, msg=None):
54+
"""
55+
publish event and msg
56+
"""
57+
return publish_sync(event, msg)
58+
59+
60+
def publish_async(event, msg=None):
61+
"""
62+
异步发送
63+
"""
64+
return event_store.fire_async(event, msg)
65+
66+
67+
def publish_sync(event, msg=None):
68+
"""
69+
同步发送
70+
"""
71+
return event_store.fire_sync(event, msg)
72+
73+
74+
def set_log(log_adapter):
75+
event_store.log = log_adapter
76+
77+
78+
def add_filter(flt):
79+
event_store.add_filter(flt)

0 commit comments

Comments
 (0)