-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmsgmanager.py
More file actions
48 lines (42 loc) · 1.26 KB
/
msgmanager.py
File metadata and controls
48 lines (42 loc) · 1.26 KB
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
import threading
import ConfigParser
import Queue
from sockwrapper import SockWrapper
from parser import Parser
'''
'''
class MsgManager:
def __init__(self):
self.parser = Parser()
self.recv_q = Queue.Queue()
# create a socket object
cf = ConfigParser.ConfigParser()
cf.read('./client.conf')
host = cf.get('socket', 'host')
port = cf.getint('socket', 'port')
self.sock = SockWrapper(host, port)
# crete a receive thread
self.recv_thread = threading.Thread(target = self.__recv)
#self.recv_thread.daemon = True
self.recv_thread.start()
#self.recv_thread.join()
def __del__(self):
print 'end'
def send(self, msg):
if isinstance(msg, list):
# input is a list, send messange one by one
for cmd in msg:
self.sock.send(cmd)
else:
self.sock.send(msg)
# Get one info object from receive queue, if queue is empty,
# this call will block
def read(self):
info = self.recv_q.get()
return info
def __recv(self):
while True:
msg = self.sock.recv()
print msg
info = self.parser.parse(msg)
self.recv_q.put(info)