def __init__(self, dispatcher, args): PacketSource.__init__(self, dispatcher) m = re.match(r'(.*):(.*)', args) if m == None: raise PacketSourceException("bad arguments") (host, port) = m.groups() port = int(port) self.io = SocketIO(host, port) self.prot = SFProtocol(self.io, self.io)
class busThread(threading.Thread): def __init__(self, server_ip, server_port, **opts): self.server_ip = server_ip self.server_port = server_port threading.Thread.__init__(self) self.sock = None self.sf = None global g_INIT_KEY self.regKey = g_INIT_KEY.strip() self.heartBeatSec = int(g_INIT_KEY.split(',')[0]) # sec,key1,key2 self.sendHeartSec = 0 # '-l' : flush mode opts['-l'] = 1 #self.opts = {} self.opts = opts self.connectToServer( -1) # nMaxRetryCnt : -1 , retry connect until connecting to BUS def kill(self): self.close() def close(self): global g_OUT_FILE global SHUTDOWN self.sf.close() if g_OUT_FILE: g_OUT_FILE.close() SHUTDOWN = True def connectToServer( self, nMaxRetryCnt ): # nMaxRetryCnt : -1 , retry connect until connecting to BUS if self.sock: self.sf.close() self.sock = socket(AF_INET, SOCK_STREAM) retryCnt = 0 while 1: try: self.sock.connect((self.server_ip, self.server_port)) except Exception, e: __LOG__.Trace( "%-10s| #[%d]fail connectToServer : %s" % ('CRITICAL', retryCnt + 1, str(e)), logging.CRITICAL) time.sleep(5) if nMaxRetryCnt > 0: retryCnt += 1 if retryCnt >= nMaxRetryCnt: return False continue __LOG__.Trace( "%-10s| Succ connectToServer [%s:%d]" % ('INFO', self.server_ip, self.server_port), logging.INFO) break self.sf = sfp.SFProtocol(sfp.SFP_CH_T, **self.opts) #, self.opts self.sf.setFD(self.sock) regStr = '%s' % self.regKey # hearBeat,key2,key2 self.sf.write(' ', 'REG', regStr + '\n') return True