Projekt

Obecné

Profil

Stáhnout (1.34 KB) Statistiky
| Větev: | Tag: | Revize:
1
import logging
2
import logging.config
3
from os.path import exists
4
from threading import Thread
5
from tendo import singleton
6
from sys import exit
7

    
8
from config_manager import logger_config
9
from usb_detector.detector import register_listener, usb_detector_run
10
from usb_detector.event_listener import usb_connected_callback, usb_disconnected_callback
11
from api_client import api_client_run
12

    
13

    
14
def init_logging():
15
    if exists(logger_config):
16
        logging.config.fileConfig(fname=logger_config)
17
    else:
18
        print(f"Cant find logger configuration \"{logger_config}\"! Please specify valid path or define new.")
19
        exit(1)
20

    
21

    
22
if __name__ == "__main__":
23
    try:
24
        app_instance = singleton.SingleInstance()
25
    except singleton.SingleInstanceException:
26
        exit(1)
27

    
28
    init_logging()
29

    
30
    register_listener(callback=usb_connected_callback, connected=True)
31
    register_listener(callback=usb_disconnected_callback, connected=False)
32

    
33
    usb_detector_thread = Thread(target=usb_detector_run)
34
    usb_detector_thread.setDaemon(True)
35

    
36
    api_thread = Thread(target=api_client_run)
37
    api_thread.setDaemon(True)
38

    
39
    logging.info('starting USB detector.')
40
    usb_detector_thread.start()
41

    
42
    logging.info('starting API communication manager.')
43
    api_thread.start()
44

    
45
    usb_detector_thread.join()
46
    api_thread.join()
47

    
48
    logging.info('application exit.')
(6-6/7)