-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmediator.py
More file actions
79 lines (60 loc) · 2.37 KB
/
Copy pathmediator.py
File metadata and controls
79 lines (60 loc) · 2.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import json
class MediatorEvent():
def __init__(self, type: str, val: str, intervalMs=0) -> None:
self.__mType = type
self.__mValue = val
self.__mIntervalMs = intervalMs
def type(self):
return self.__mType
def value(self):
return self.__mValue
def intervalMs(self):
return self.__mIntervalMs
__mType = str
__mValue = str
__mIntervalMs = int
class Mediator():
def notify(self, sender: object, event: MediatorEvent) -> None:
pass
class ConcreteMediator(Mediator):
def __init__(self, component1: object, component2: object, component3: object) -> None:
if not component1 == None:
self._handler = component1
self._handler.mediator = self
if not component1 == None:
self._reader = component2
self._reader.mediator = self
if not component1 == None:
self._jproc = component3
self._jproc.mediator = self
def notify(self, sender: object, event: MediatorEvent) -> None:
data = list()
data = self._reader.readDataInInterval(event.intervalMs()/1000)
if event.type() == 'search_global':
if len(data) > 0:
# list records by last element
metricsArray = self._jproc.listDataRecords(data[-1].mJson)
sender.sendSearchResponce(metricsArray)
else:
print("Json reader has no data to read!")
sender.sendSearchResponce(json.loads("[]"))
if event.type() == 'search_target':
print("Event search_target isn't supported!")
sender.sendSearchResponce(json.loads("[]"))
if event.type() == 'query_targets':
responceData = self._jproc.getTagetData(data, event.value())
try:
sender.sendQueryResponce(json.loads(responceData))
except json.JSONDecodeError as e:
print("JSONDecodeError:", e.doc)
except BrokenPipeError as e:
print(e.errno, e.strerror, e.filename, e.filename2, e.args)
class BaseComponent:
def __init__(self, mediator: Mediator = None) -> None:
self._mediator = mediator
@property
def mediator(self) -> Mediator:
return self._mediator
@mediator.setter
def mediator(self, mediator: Mediator) -> None:
self._mediator = mediator