00001 #!/usr/local/bin/python 00002 # 00003 # Copyright 2004 00004 # by 00005 # The Board of Trustees of the 00006 # Leland Stanford Junior University. 00007 # All rights reserved. 00008 # 00009 00010 00011 __facility__ = "Online" 00012 __abstract__ = "Event file playback test" 00013 __author__ = "A. Perazzo <perazzo@SLAC.Stanford.edu> SLAC - GLAST I&T/Online" 00014 __date__ = ("$Date: 2005/02/08 22:20:05 $").split(' ')[1] 00015 __version__ = "$Revision: 2.5 $" 00016 __release__ = "$Name: R04-12-00 $" 00017 __credits__ = "SLAC" 00018 00019 import LATTE.copyright_SLAC 00020 00021 from threading import Thread, Lock 00022 00023 import LATTE.client.gOptions as gOptions 00024 import LATTE.client.gCmdCli as gCmdCli 00025 import LATTE.client.gEvtCli as gEvtCli 00026 import LATTE.database.gGLT as gGLT 00027 00028 class Playback: 00029 __Debug = 0xf 00030 00031 def __init__(self, server): 00032 self.__server = server 00033 self.__cmdcli = gCmdCli.CmdCli() 00034 self.__evtcli = gEvtCli.EvtCli(Playback.__Debug) 00035 self.__glt = gGLT.GGLT(self.__cmdcli) 00036 self.__lock = Lock() 00037 self.__lock.acquire() 00038 self.__abort = False 00039 00040 def connect(self): 00041 self.__cmdcli.connect(self.__server) 00042 self.__evtcli.connect(self.__server) 00043 00044 def disconnect(self): 00045 self.__cmdcli.disconnect() 00046 self.__evtcli.disconnect() 00047 00048 def trigger(self, howmany): 00049 self.__glt.marker = 5 00050 self.__glt.cmd_self_trigger = 1 00051 self.__lock.acquire() 00052 for t in range(howmany): 00053 self.__glt.marker = 0 00054 self.__glt.cmd_self_trigger = 1 00055 self.__lock.acquire() 00056 self.__abort = True 00057 self.__glt.marker = 5 00058 self.__glt.cmd_self_trigger = 1 00059 self.__lock.acquire() 00060 00061 def listen(self): 00062 evtHandler = Thread(None, self.__listen) 00063 evtHandler.start() 00064 00065 def __listen(self): 00066 while self.__abort is False: 00067 status = self.__evtcli.readEvent() 00068 if status != 0: 00069 print "*** playback error in event" 00070 self.__lock.release() 00071 00072 def test_playback(): 00073 options = gOptions.Options(['server', 'nevents']) 00074 try: 00075 options.parse() 00076 except Exception, msg: 00077 options.usage(str(msg)) 00078 return 00079 playback = Playback(options.server) 00080 playback.connect() 00081 playback.listen() 00082 playback.trigger(int(options.nevents)) 00083 playback.disconnect() 00084 00085 00086 if __name__ == '__main__': 00087 test_playback()