예제 #1
0
    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)
예제 #2
0
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