Ejemplo n.º 1
0
 def start(self):
     self.log.trace()
     self.__flag = Wrapper.Event()
     self.__job = Wrapper.Thread(
         group=None,
         target=self.__loop,
         name=None,
         kwargs={"stop_event": self.__flag})
     self.__job.daemon = True
     self.__flag.set()
     self.__job.start()
Ejemplo n.º 2
0
    def __init__(self, handle=None):
        matrix = {
            EventId.CONNECTREQ: {
                self.__StateId.INIT: self.__init_connectreq,
                self.__StateId.CONNECTED: self.__connected_connectreq
            },
            EventId.CONNECTCNF: {
                self.__StateId.INIT: self.__init_connectcnf,
                self.__StateId.CONNECTED: self.__connected_connectcnf
            },
            EventId.SENDCNF: {
                self.__StateId.INIT: self.__init_sendcnf,
                self.__StateId.CONNECTED: self.__connected_sendcnf
            },
            EventId.DATANOTIFY: {
                self.__StateId.INIT: self.__init_datanotify,
                self.__StateId.CONNECTED: self.__connected_datanotify
            },
            EventId.DISCONNECTREQ: {
                self.__StateId.INIT: self.__init_disconnectreq,
                self.__StateId.CONNECTED: self.__connected_disconnectreq
            },
            EventId.DISCONNECTCNF: {
                self.__StateId.INIT: self.__init_disconnectcnf,
                self.__StateId.CONNECTED: self.__connected_disconnectcnf
            }
        }

        MultiThreadClass.__init__(self,
                                  name=__name__,
                                  uniid=UnitId.UNITCTRL,
                                  matrix=matrix,
                                  daemon=False)

        self.__handle = handle

        self.__sync = {
            "lock": Wrapper.Lock(),
            "event": {
                "connect": Wrapper.Event(),
                "disconnect": Wrapper.Event()
            }
        }

        common_daemon_flug = False
        self.__session_mng = SessionMng(daemon=common_daemon_flug)
        self.__socket_ctrl = SocketCtrl(daemon=common_daemon_flug)
        self.__http_ctrl = HttpCtrl(daemon=common_daemon_flug)
        self.__parse_info = ParseInfo(daemon=common_daemon_flug)
        self.__timer_mng = TimerMng(daemon=common_daemon_flug)

        self.state = self.__StateId.INIT
Ejemplo n.º 3
0
    def __init__(self, daemon=False):
        matrix = {
            EventId.SOCKETCONNECTREQ: {
                self.__StateId.IDLE: self.__idle_socketconnectreq,
                self.__StateId.RECEIVING: self.__receiving_socketconnectreq},
            EventId.SOCKETSENDREQ: {
                self.__StateId.IDLE: self.__idle_socketsendreq,
                self.__StateId.RECEIVING: self.__receiving_socketsendreq},
            EventId.SOCKETDISCONNECTREQ: {
                self.__StateId.IDLE: self.__idle_socketdisconnectreq,
                self.__StateId.RECEIVING: self.__receiving_socketdisconnectreq}}

        MultiThreadClass.__init__(
            self,
            name=__name__,
            uniid=UnitId.SOCKETCTRL,
            matrix=matrix,
            daemon=daemon)

        self.__socket_info = dict()
        self.__main_socket = None
        self.__socket = None
        self.__bufsize = 2048

        self.__flag_loop = None
        self.__job_loop = None
        self.__lock = Wrapper.Lock()

        self.state = self.__StateId.IDLE
Ejemplo n.º 4
0
 def __get_response(self, url):
     self.log.trace()
     self.log.info("open URL %s", url)
     response = self.__openerDirector.open(url)
     data = Wrapper.decode(response.read())
     self.log.info("response data %s", data)
     response.close()
     return data
Ejemplo n.º 5
0
 def send(self, data):
     self.log.trace()
     sendData = Wrapper.encode(data + "\0")
     dataByte = len(sendData)
     sendByte = self.__socket.send(sendData)
     if dataByte == sendByte:
         return True
     else:
         return False
Ejemplo n.º 6
0
 def recv(self):
     """
     TODO
     受信したデータはstr型
     len()でバイト数が0なら受診なしとみなしてNoneを返すようにする。
         len('\0') = 1 になるため、受信データ = '\0' の場合にNoneを返す。
     呼び出し元はNoneなら受信なしとして、ソケットがクローズされたものとみなす。
     """
     self.log.trace()
     data = self.__socket.recv(self.bufsize)
     unidata = Wrapper.decode(data)
     unidata = unidata.replace("\0", "")
     return unidata
Ejemplo n.º 7
0
 def __idle_timerreq(self, container):
     self.log.trace()
     self.__timer_list_lock.acquire(blocking = True, timeout = -1)
     timer_id = Unique.unique()
     timer = Wrapper.Timer(
         interval = container.message.interval,
         function = self.__timer_expire,
         args = None,
         kwargs = {
             "timer_id": timer_id,
             "unit_id": container.message.unit_id,
             "event_id": container.message.event_id,
             "data": container.message.data})
     self.__timer_list[timer_id] = timer
     self.__timer_list[timer_id].start()
     self.__timer_list_lock.release()
     return True
Ejemplo n.º 8
0
    def __init__(self, daemon=False):

        self.__STATE_IDLE = 0x00

        matrix = {
            EventId.TIMERREQ: {
                self.__STATE_IDLE: self.__idle_timerreq}}

        MultiThreadClass.__init__(
            self,
            name=__name__,
            uniid=UnitId.TIMERMNG,
            matrix=matrix,
            daemon=daemon)

        self.state = self.__STATE_IDLE

        self.__timer_list = dict()
        self.__timer_list_lock = Wrapper.Lock()