Ejemplo n.º 1
0
Archivo: conn.py Proyecto: intohole/CUP
 def get_sock(self):
     """
     return associated socket
     """
     misc.check_not_none(self._sock)
     sock = self._sock
     return sock
Ejemplo n.º 2
0
 def get_sock(self):
     """
     return associated socket
     """
     misc.check_not_none(self._sock)
     sock = self._sock
     return sock
Ejemplo n.º 3
0
 def poll(self):
     """
     start to poll
     """
     self._thdpool.start()
     self._executor.run()
     log.info('thdpool and executor start')
     misc.check_not_none(self._bind_sock)
     self._bind_sock.listen(128)
     self._executor.queue_exec(self.listen_new_connect,
                               urgency=executor.URGENCY_HIGH)
     self._executor.delay_exec(
         2,  # todo set the check_time to ?
         self.do_check_msg_ack_loop,
         urgency=executor.URGENCY_HIGH)
     while not self._stopsign:
         try:
             events = self._poller.poll(1)
             # events = self._epoll.poll(1)
         except IOError as err:
             if err.errno == errno.EINTR:
                 return
             raise err
         log.debug('poller events num {0}'.format(len(events)))
         for fileno, event in events:
             # if it comes from the listen port, new conn
             #if fileno == self._bind_sock.fileno():
             #    newsock, addr = self._bind_sock.accept()
             #    self._handle_new_conn(newsock, addr)
             # if event & select.EPOLLIN:
             if event & ioloop.READ:
                 log.info('ioloop.READ, fd {0}'.format(fileno))
                 try:
                     self._handle_new_recv(self._fileno2context[fileno])
                 except KeyError:
                     log.info('fd:{0} socket already closed'.format(fileno))
             # elif event & select.EPOLLOUT:
             elif event & ioloop.WRITE:
                 log.info('ioloop.WRITE, fd {0}'.format(fileno))
                 try:
                     self._handle_new_send(self._fileno2context[fileno])
                 except KeyError:
                     log.info('fd:%s, socket already closed' % fileno)
             elif event & ioloop.ERROR:
                 # FIXME: consider if we need to release net msg resources
                 if event & select.EPOLLHUP:
                     log.info('--EPOLLHUP--')
                 else:
                     log.info('--EPOLLERR--')
                 try:
                     self.cleanup_error_context(
                         self._fileno2context[fileno])
                 except KeyError:
                     log.info('socket already closed')
Ejemplo n.º 4
0
 def poll(self):
     """
     start to poll
     """
     self._thdpool.start()
     self._executor.run()
     log.info('thdpool and executor start')
     misc.check_not_none(self._bind_sock)
     self._bind_sock.listen(10)
     self._executor.delay_exec(
         2,   # todo set the check_time to ?
         self.do_check_msg_ack_loop,
         urgency=executor.URGENCY_HIGH
     )
     while not self._stopsign:
         try:
             events = self._epoll.poll(1)
         except IOError as err:
             if err.errno == errno.EINTR:
                 return
             raise err
         # log.debug('start to poll')
         for fileno, event in events:
             # if it comes from the listen port, new conn
             if fileno == self._bind_sock.fileno():
                 newsock, addr = self._bind_sock.accept()
                 self._handle_new_conn(newsock, addr)
             elif event & select.EPOLLIN:
                 try:
                     self._handle_new_recv(self._fileno2context[fileno])
                 except KeyError:
                     log.info('socket already closed')
             elif event & select.EPOLLOUT:
                 try:
                     self._handle_new_send(self._fileno2context[fileno])
                 except KeyError:
                     log.info('socket already closed')
             elif (event & select.EPOLLHUP) or (event & select.EPOLLERR):
                 # FIXME: consider if we need to release net msg resources
                 if event & select.EPOLLHUP:
                     log.info('--EPOLLHUP--')
                 else:
                     log.info('--EPOLLERR--')
                 try:
                     self._handle_error_del_context(
                         self._fileno2context[fileno]
                     )
                 except KeyError:
                     log.info('socket already closed')
Ejemplo n.º 5
0
Archivo: conn.py Proyecto: intohole/CUP
 def poll(self):
     """
     start to poll
     """
     self._thdpool.start()
     misc.check_not_none(self._bind_sock)
     self._bind_sock.listen(10)
     while not self._stopsign:
         try:
             events = self._epoll.poll(1)
         except IOError as err:
             if err.errno == errno.EINTR:
                 return
             raise err
         # cup.log.debug('start to poll')
         for fileno, event in events:
             # if it comes from the listen port, new conn
             if fileno == self._bind_sock.fileno():
                 newsock, addr = self._bind_sock.accept()
                 cup.log.debug(
                     'epoll catch a new connection: %s:%s' %
                     (addr[0], addr[1])
                 )
                 self._handle_new_conn(newsock, addr)
             elif event & select.EPOLLIN:
                 try:
                     self._handle_new_recv(self._fileno2context[fileno])
                 except KeyError:
                     cup.log.info('socket already closed')
             elif event & select.EPOLLOUT:
                 try:
                     self._handle_new_send(self._fileno2context[fileno])
                 except KeyError:
                     cup.log.info('socket already closed')
             elif (event & select.EPOLLHUP) or (event & select.EPOLLERR):
                 if event & select.EPOLLHUP:
                     cup.log.info('--EPOLLHUP--')
                 else:
                     cup.log.info('--EPOLLERR--')
                 try:
                     self._handle_error_del_context(
                         self._fileno2context[fileno]
                     )
                 except KeyError:
                     cup.log.info('socket already closed')
Ejemplo n.º 6
0
 def poll(self):
     """
     start to poll
     """
     self._thdpool.start()
     misc.check_not_none(self._bind_sock)
     self._bind_sock.listen(10)
     while not self._stopsign:
         try:
             events = self._epoll.poll(1)
         except IOError as err:
             if err.errno == errno.EINTR:
                 return
             raise err
         # cup.log.debug('start to poll')
         for fileno, event in events:
             # if it comes from the listen port, new conn
             if fileno == self._bind_sock.fileno():
                 newsock, addr = self._bind_sock.accept()
                 cup.log.debug('epoll catch a new connection: %s:%s' %
                               (addr[0], addr[1]))
                 self._handle_new_conn(newsock, addr)
             elif event & select.EPOLLIN:
                 try:
                     self._handle_new_recv(self._fileno2context[fileno])
                 except KeyError:
                     cup.log.info('socket already closed')
             elif event & select.EPOLLOUT:
                 try:
                     self._handle_new_send(self._fileno2context[fileno])
                 except KeyError:
                     cup.log.info('socket already closed')
             elif (event & select.EPOLLHUP) or (event & select.EPOLLERR):
                 if event & select.EPOLLHUP:
                     cup.log.info('--EPOLLHUP--')
                 else:
                     cup.log.info('--EPOLLERR--')
                 try:
                     self._handle_error_del_context(
                         self._fileno2context[fileno])
                 except KeyError:
                     cup.log.info('socket already closed')
Ejemplo n.º 7
0
def check_not_none(param):
    """
    同cup.util.misc.check_type. 请使用前者
    """
    misc.check_not_none(param)
Ejemplo n.º 8
0
def check_not_none(param):
    """
    同cup.util.misc.check_type. 请使用前者
    """
    misc.check_not_none(param)
Ejemplo n.º 9
0
def check_not_none(param):
    """
    deprecated. Recommand using misc.check_not_none
    """
    misc.check_not_none(param)