-
Notifications
You must be signed in to change notification settings - Fork 0
/
pipeagent.py
100 lines (83 loc) · 2.6 KB
/
pipeagent.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
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import sys
import time
import yaml
import logging
import threading
from broker import Broker
from reader import Reader
from locallogger import LocalLogger
from mac_tracker_server import MacTrackerServer
class PipeAgent(threading.Thread):
_config = None
def __init__(self, config=None):
threading.Thread.__init__(self)
if config is None:
#sys.stdout.write("Error: Config file empty or not initialized\n")
print "Error: Config file empty or not initialized\n"
return
self._config = config
def run(self):
# 1. Start Broker
broker = Broker()
broker.setDaemon(True)
broker.start()
# 2. Start Senders
try:
local_logger = LocalLogger(
queue_size=4096,
config=self._config['sender']['local_logger'])
local_logger.setDaemon(True)
except Exception as e:
print e
print "ERROR: Can\'t create local looger"
else:
broker.register_sender(local_logger)
local_logger.start()
try:
mac_tracker_server = MacTrackerServer(
queue_size=4096,
config=self._config['sender']['mac_tracker_server']
)
mac_tracker_server.setDaemon(True)
except Exception as e:
print e
print "ERROR: Can\'t create MAC tracker server"
else:
broker.register_sender(mac_tracker_server)
mac_tracker_server.start()
# 3. Start Reader
try:
reader = Reader(broker, config=self._config['pipe_file'])
reader.setDaemon(True)
except Exception as e:
#sys.stdout.write("Error: Can\'t create PipeReader\n")
print e
print "Error: Can\'t create PipeReader\n"
else:
reader.start()
broker.join()
reader.join()
#Agent Thread Start Idle Here
while (True):
time.sleep(1)
pass
def main(args=None):
#global log
#log = logging.getLogger()
try:
config_file = open('config.yml')
except IOError:
#sys.stdout.write("Error: can\'t find config file or read data from: config.yml\n")
print "Error: can\'t find config file or read data from: config.yml\n"
return
else:
config_map = yaml.load(config_file)
config_file.close()
agent = PipeAgent(config=config_map)
agent.setDaemon(True)
agent.start()
# Main Thread Idle Here
while (True):
time.sleep(1)
if __name__ == "__main__":
main()