diff options
-rwxr-xr-x | abs/core/LinHES-system/PKGBUILD | 6 | ||||
-rwxr-xr-x | abs/core/LinHES-system/msg_client.py | 69 | ||||
-rwxr-xr-x | abs/core/LinHES-system/msg_daemon.py | 39 |
3 files changed, 83 insertions, 31 deletions
diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD index 9e57a5b..9b3bca7 100755 --- a/abs/core/LinHES-system/PKGBUILD +++ b/abs/core/LinHES-system/PKGBUILD @@ -1,6 +1,6 @@ pkgname=LinHES-system pkgver=2 -pkgrel=104 +pkgrel=107 arch=('i686' 'x86_64') MVDIR=$startdir/pkg/usr/LH BINDIR=$startdir/pkg/usr/bin @@ -88,8 +88,8 @@ md5sums=('5bd4938cf41b63787aa4cdfd76423e09' '8f474e019d5fcb775497aca355d61b0b' '4a3cd8f9b33b2b86fdba47a8f1fa2859' '4d5a2441fe681c85986c5626c2944a3d' - 'e4e6bd9ef85ab1498e5d3fb0d57816d2' - '1c8df75728926f0af53c8757c22d8c58' + '0e76cd8f320a852a162931450a1fb8b7' + '55b33e6a08eeea2a5280da0100f2c33c' 'ea315f41dcd6c978e546c95fc05546cf' 'ac61cc460d9e97ba1f5ef69e92cdfbe5' '06a628469051237943b7c874f2e29b8a' diff --git a/abs/core/LinHES-system/msg_client.py b/abs/core/LinHES-system/msg_client.py index 175933f..54c2e54 100755 --- a/abs/core/LinHES-system/msg_client.py +++ b/abs/core/LinHES-system/msg_client.py @@ -5,7 +5,7 @@ import socket import sys import argparse import pickle - +import time # Create a UDS socket sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) @@ -18,22 +18,59 @@ def send_message(message): except socket.error, msg: print >>sys.stderr, msg sys.exit(1) - try: - sock.sendall(message) - #amount_received = 0 - #amount_expected = len(message) +#try: + sock.sendall(message) + #amount_received = 0 + #amount_expected = len(message) + print "Waiting for response..." + data = sock.recv(1024) + print data + +#finally: + #print >>sys.stderr, 'error occured closing socket' + + sock.close() +def usage(): + line = ''' + Help screen: + 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 + - #while amount_received < amount_expected: - # data = sock.recv(16) - # amount_received += len(data) - # print >>sys.stderr, 'received "%s"' % data + 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 - finally: - #print >>sys.stderr, 'closing socket' - print "message sent" - sock.close() + To immediately stop displaying the current message, use the kill command. + msg_client.py --kill + ''' + print line + sys.exit(0) if __name__ == "__main__": parser = argparse.ArgumentParser() @@ -43,6 +80,8 @@ if __name__ == "__main__": action.add_argument('--msg', action='store', dest='msg', help='Add message to the queue') action.add_argument('--clear', action='store_true', help='Remove message from queue that match tag') action.add_argument('--kill', action='store_true', help='Kill current msg thats displayed') + action.add_argument('--print_list', action='store_true', help='Print current queue') + action.add_argument('--usage', action='store_true', help='Print help screen') results = parser.parse_args() resultsdict = vars(results) @@ -53,6 +92,10 @@ if __name__ == "__main__": cmd = "clear" elif results.kill: cmd = "kill" + elif results.print_list: + cmd = "list" + elif results.usage: + usage() arg_dict = {'cmd':cmd , 'msg':resultsdict['msg'] , 'tag':resultsdict['tag'] , 'timeout':resultsdict['timeout']} send_message(pickle.dumps(arg_dict)) 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() |