/
shadow.py
35 lines (25 loc) 路 1.05 KB
/
shadow.py
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
import log
class Shadow:
def __init__(self, mind, lastname=None):
self.firstname = type(self).__name__
self.lastname = lastname
self.name = self.firstname if lastname is None else self.firstname + ":" + lastname
self.mind = mind
self.reflexes = {}
log.info("Starting shadow", self.name, "...")
def add_reflex(self, reflex):
if reflex.name in self.reflexes:
log.warn("Reusing reflex name when adding a entry. Removing previous reflex")
self.remove_reflex(reflex.name)
self.reflexes[reflex.name] = reflex
def remove_reflex(self, reflex_name):
if reflex_name in self.reflexes:
reflex = self.reflexes[reflex_name]
del self.reflexes[reflex_name]
reflex.on_remove()
def on_remove(self):
log.info("Stopping shadow", self.name, "...")
for reflex in self.reflexes.values():
reflex.on_remove()
def require_device(self, device_name):
self.mind.require_device(device_name)