termination mechanism integrated
This commit is contained in:
@ -1,14 +1,23 @@
|
||||
from loguru import logger
|
||||
import argparse
|
||||
import configparser
|
||||
import threading
|
||||
|
||||
from ProcessImage import ProcessImage
|
||||
from ModbusHandler import modbusStart
|
||||
from MqttEventPublisher import mqttEventPublisherStart
|
||||
from MqttPeriodPublisher import mqttPeriodPublisherStart
|
||||
from MqttCoilSubscriber import mqttCoilSubscriberStart
|
||||
from ModbusHandler import ModbusHandler
|
||||
from MqttEventPublisher import MqttEventPublisher, mqttEventPublisherStart
|
||||
from MqttPeriodPublisher import MqttPeriodPublisher
|
||||
from MqttCoilSubscriber import MqttCoilSubscriber
|
||||
|
||||
|
||||
deathBell = threading.Event()
|
||||
|
||||
def exceptHook(args):
|
||||
global deathBell
|
||||
logger.error("Exception in thread caught: {}".format(args))
|
||||
deathBell.set()
|
||||
logger.error("rang the death bell")
|
||||
|
||||
|
||||
logger.info("DigitalTwin1 starting")
|
||||
|
||||
@ -27,17 +36,44 @@ config.read(args.config)
|
||||
|
||||
processImage = ProcessImage()
|
||||
|
||||
modbusStart(config, processImage)
|
||||
modbusHandlerThread = ModbusHandler(config, processImage)
|
||||
modbusHandlerThread.start()
|
||||
logger.info("Modbus handler running")
|
||||
|
||||
mqttEventPublisherStart(config, processImage)
|
||||
mqttEventPublisherThread = MqttEventPublisher(config, processImage)
|
||||
mqttEventPublisherThread.start()
|
||||
logger.info("MQTT event publisher running")
|
||||
|
||||
mqttPeriodPublisherStart(config, processImage)
|
||||
mqttPeriodPublisherThread = MqttPeriodPublisher(config, processImage)
|
||||
mqttPeriodPublisherThread.start()
|
||||
logger.info("MQTT period publisher running")
|
||||
|
||||
mqttCoilSubscriberStart(config, processImage)
|
||||
mqttCoilSubscriberThread = MqttCoilSubscriber(config, processImage)
|
||||
mqttCoilSubscriberThread.start()
|
||||
logger.info("MQTT coil subscriber running")
|
||||
|
||||
threading.excepthook = exceptHook
|
||||
logger.info("Threading excepthook set")
|
||||
|
||||
logger.info("DigitalTwin1 running")
|
||||
|
||||
|
||||
deathBell.wait()
|
||||
logger.error("DigitalTwin1 is dying")
|
||||
|
||||
modbusHandlerThread.stop()
|
||||
mqttEventPublisherThread.stop()
|
||||
mqttPeriodPublisherThread.stop()
|
||||
mqttCoilSubscriberThread.stop()
|
||||
|
||||
modbusHandlerThread.join()
|
||||
logger.error("modbusHandlerThread joined")
|
||||
mqttEventPublisherThread.join()
|
||||
logger.error("mqttEventPublisherThread joined")
|
||||
mqttPeriodPublisherThread.join()
|
||||
logger.error("mqttPeriodPublisherThread joined")
|
||||
mqttCoilSubscriberThread.join()
|
||||
logger.error("mqttCoilSubscriberThread joined")
|
||||
|
||||
logger.error("DigitalTwin1 to terminate")
|
||||
|
||||
|
Reference in New Issue
Block a user