Go to the documentation of this file.00001
00002
00003 import subprocess
00004 import threading
00005 import time
00006 import roslib
00007
00008 class Users(roslib.message.Message):
00009 __slots__ = ('users',)
00010 def __init__(self, users):
00011 self.users = users
00012
00013 class UsersThread(threading.Thread):
00014 def __init__(self):
00015 threading.Thread.__init__(self)
00016
00017 self.callback = None
00018
00019 def setCallback(self, callback):
00020 self.callback = callback
00021
00022 def getUsers(self):
00023 p = subprocess.Popen(['users'], stdout=subprocess.PIPE)
00024 line = p.stdout.readline().strip()
00025 parts = line.split()
00026 users = {}
00027 map(users.__setitem__, parts, [])
00028 users = users.keys()
00029 users.sort()
00030 users = tuple(users)
00031
00032 return users
00033
00034 def run(self):
00035 lastusers = ()
00036 while 1:
00037 try:
00038 users = self.getUsers()
00039 if users != lastusers:
00040 lastusers = users
00041 self.callback(Users(users))
00042 except:
00043 pass
00044 time.sleep(3)
00045
00046