def __add_ev_read(self, fileno):
"""
Note:if the event exists,it will not do anything
"""
if fileno not in self.__rlist and self.__async_mode == "select":
self.__rlist.append(fileno)
if self.__async_mode == "epoll":
if fileno not in self.__epoll_register_info:
self.__epoll_register_info[fileno] = None
eventmask = self.__epoll_register_info[fileno]
event = select.EPOLLIN
if eventmask == None:
eventmask = event
self.__epoll_object.register(fileno, eventmask)
self.__epoll_register_info[fileno] = eventmask
return
is_register_read = (eventmask & select.EPOLLIN) == select.EPOLLIN
if is_register_read == False:
eventmask = event | eventmask
self.__epoll_object.modify(fileno, eventmask)
if self.__async_mode == "kqueue":
filter_ = select.KQ_FILTER_READ
flags = select.KQ_EV_ADD | select.KQ_EV_ERROR | select.KQ_EV_ENABLE
if fileno not in self.__kqueue_event_map:
kevent = select.kevent(fileno, filter_, flags)
kevent.udata = 0
else:
kevent = self.__kqueue_event_map[fileno]
read_exists = (kevent.udata & EV_TYPE_READ) == EV_TYPE_READ
if read_exists == False:
kevent.filter = filter_
kevent.udata = (kevent.udata | EV_TYPE_READ)
kevent.flags = flags
if fileno not in self.__kqueue_change_event_map:
self.__kqueue_change_event_map[fileno] = []
self.__kqueue_change_event_map[fileno].append(kevent)
''''''
return
评论列表
文章目录