def get_sock(self): """ return associated socket """ misc.check_not_none(self._sock) sock = self._sock return sock
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')
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')
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')
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')
def check_not_none(param): """ 同cup.util.misc.check_type. 请使用前者 """ misc.check_not_none(param)
def check_not_none(param): """ deprecated. Recommand using misc.check_not_none """ misc.check_not_none(param)