summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xabs/core/LinHES-system/PKGBUILD6
-rwxr-xr-xabs/core/LinHES-system/msg_client.py69
-rwxr-xr-xabs/core/LinHES-system/msg_daemon.py39
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()