summaryrefslogtreecommitdiffstats
path: root/abs/core/LinHES-system/msg_daemon.py
diff options
context:
space:
mode:
authorJames Meyer <james.meyer@operamail.com>2012-09-27 18:32:06 (GMT)
committerJames Meyer <james.meyer@operamail.com>2012-09-27 18:32:06 (GMT)
commit304d821050223f5ab40df4e7a20afbc818b6665d (patch)
tree111065244dbf4bb39a5148d536159570f12a2a56 /abs/core/LinHES-system/msg_daemon.py
parentccf22570c93522c55c48bdf01633550ce0ce5797 (diff)
downloadlinhes_pkgbuild-304d821050223f5ab40df4e7a20afbc818b6665d.zip
linhes_pkgbuild-304d821050223f5ab40df4e7a20afbc818b6665d.tar.gz
linhes_pkgbuild-304d821050223f5ab40df4e7a20afbc818b6665d.tar.bz2
LinHES-system: add the ability to view the msg queue
msg_client.py is used to add,remove, or list items in the queue of messages that will be displayed on screen. Optionaly messages can be given an identifier or "tag". This identifier does not have to be unique. Items are processed in the order they arrive, based off their slot number. The lowest slot number will be displayed first. After the message is displayed it is removed from the queue. ADD: To add items to the queue: msg_client.py --msg "My first message" --tag "tag1" REMOVE: Removing items are based off the tag. To remove all items from the queue that match the tag "tag1": msg_client.py --clear --tag tag1 To remove all items from the queue: msg_client.py --clear Listing items in the queue or to get the total count: msg_client.py --print_list > ------------- > msg : slot 1 > slot : 1 > cmd : msg > tag : None > timeout : None To immediately stop displaying the current message, use the kill command. msg_client.py --kill
Diffstat (limited to 'abs/core/LinHES-system/msg_daemon.py')
-rwxr-xr-xabs/core/LinHES-system/msg_daemon.py39
1 files changed, 24 insertions, 15 deletions
diff --git a/abs/core/LinHES-system/msg_daemon.py b/abs/core/LinHES-system/msg_daemon.py
index b766aae..0e54824 100755
--- a/abs/core/LinHES-system/msg_daemon.py
+++ b/abs/core/LinHES-system/msg_daemon.py
@@ -224,12 +224,8 @@ class Msg_Queue():
def search(self,key,value):
pass
- def print_queue(self):
- print "############################"
- for i in self.msglist:
- for key, value in i.iteritems():
- print key,":", value
- print "-----"
+ def get_queue(self):
+ return self.msglist
def get_last_msg_slot(self):
return self.msg_slot
@@ -289,7 +285,7 @@ class msg_queue_runner(threading.Thread):
self.p.start()
self.p.join()
elif style == "default":
- display_time = int(msgdict['timeout'])
+ #display_time = int(msgdict['timeout'])
self.out_xosd.display(msgtext,display_time)
except:
@@ -310,40 +306,53 @@ if __name__ == "__main__":
# Create a UDS socket
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
# Bind the socket to the port
- print >>sys.stderr, 'starting up on %s' % server_address
+ #print >>sys.stderr, 'starting up on %s' % server_address
sock.bind(server_address)
#change permissions of socket
os.chmod(server_address,0777)
# Listen for incoming connections
- sock.listen(1)
+ sock.listen(2)
#start msg display thread
msgthread = msg_queue_runner(msg_queue)
msgthread.setDaemon(True)
msgthread.start()
-
#main loop that reads in the cmddict, never exits
while True:
# Wait for a connection
connection, client_address = sock.accept()
try:
- sf = connection.makefile("r+b", bufsize=0)
- data = sf.read()
+ #sf = connection.makefile("r+b", bufsize=0)
+ data = connection.recv(1024)
cmddict = (pickle.loads(data))
-
+ connection.send(" Server acknowledged client \n")
if cmddict['cmd'] == "msg":
#add to msg_queue
msg_queue.add_msg(cmddict)
+
elif cmddict['cmd'] == 'clear':
if cmddict['tag'] == '' or cmddict['tag'] == None :
msg_queue.clear()
else:
msg_queue.clear_msg(cmddict['tag'])
+
elif cmddict['cmd'] == 'kill':
msgthread.kill_current()
- ## call(["/usr/LH/bin/lh_message.sh", msg])
- #break
+
+ elif cmddict['cmd'] == 'list':
+ q = msg_queue.get_queue()
+ for i in q:
+ line="-------------\n"
+ connection.send(line)
+ for k,v in i.iteritems():
+ line=" %s : %s\n" %(k,v)
+ connection.send(line)
+ line = "Number of messages in queue: %s \n" %(len(q))
+ connection.send(line)
+ #connection.send(pickle.dumps(q))
+
+
finally:
# Clean up the connection
connection.close()