|
@@ -1,5 +1,6 @@
|
|
import ISC
|
|
import ISC
|
|
import pickle
|
|
import pickle
|
|
|
|
+import signal
|
|
|
|
|
|
class ConfigData:
|
|
class ConfigData:
|
|
def __init__(self):
|
|
def __init__(self):
|
|
@@ -16,6 +17,7 @@ class ConfigManager:
|
|
self.cc = ISC.CC.Session()
|
|
self.cc = ISC.CC.Session()
|
|
self.cc.group_subscribe("ConfigManager")
|
|
self.cc.group_subscribe("ConfigManager")
|
|
self.config = ConfigData()
|
|
self.config = ConfigData()
|
|
|
|
+ self.running = False
|
|
|
|
|
|
def notify_boss(self):
|
|
def notify_boss(self):
|
|
self.cc.group_sendmsg({"running": "configmanager"}, "Boss")
|
|
self.cc.group_sendmsg({"running": "configmanager"}, "Boss")
|
|
@@ -71,8 +73,8 @@ class ConfigManager:
|
|
return answer
|
|
return answer
|
|
|
|
|
|
def run(self):
|
|
def run(self):
|
|
- msg = 1
|
|
|
|
- while (msg):
|
|
|
|
|
|
+ self.running = True
|
|
|
|
+ while (self.running):
|
|
msg, env = self.cc.group_recvmsg(False)
|
|
msg, env = self.cc.group_recvmsg(False)
|
|
if msg:
|
|
if msg:
|
|
print("received message: ")
|
|
print("received message: ")
|
|
@@ -82,13 +84,23 @@ class ConfigManager:
|
|
print(answer)
|
|
print(answer)
|
|
self.cc.group_reply(env, answer)
|
|
self.cc.group_reply(env, answer)
|
|
print("answer sent")
|
|
print("answer sent")
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ else:
|
|
|
|
+ self.running = False
|
|
|
|
+
|
|
|
|
+cm = None
|
|
|
|
+
|
|
|
|
+def signal_handler(signal, frame):
|
|
|
|
+ global cm
|
|
|
|
+ if cm:
|
|
|
|
+ cm.running = False
|
|
|
|
+
|
|
if __name__ == "__main__":
|
|
if __name__ == "__main__":
|
|
print("Hello, BIND10 world!")
|
|
print("Hello, BIND10 world!")
|
|
db_file = "/tmp/parkinglot.db"
|
|
db_file = "/tmp/parkinglot.db"
|
|
try:
|
|
try:
|
|
cm = ConfigManager()
|
|
cm = ConfigManager()
|
|
|
|
+ signal.signal(signal.SIGINT, signal_handler)
|
|
|
|
+ signal.signal(signal.SIGTERM, signal_handler)
|
|
cm.read_config(db_file)
|
|
cm.read_config(db_file)
|
|
# do loading here if necessary
|
|
# do loading here if necessary
|
|
cm.notify_boss()
|
|
cm.notify_boss()
|