本文整理汇总了Python中select.KQ_EV_EOF属性的典型用法代码示例。如果您正苦于以下问题:Python select.KQ_EV_EOF属性的具体用法?Python select.KQ_EV_EOF怎么用?Python select.KQ_EV_EOF使用的例子?那么, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类select
的用法示例。
在下文中一共展示了select.KQ_EV_EOF属性的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: poll
# 需要导入模块: import select [as 别名]
# 或者: from select import KQ_EV_EOF [as 别名]
def poll(self, timeout):
kevents = self._kqueue.control(None, 1000, timeout)
events = {}
for kevent in kevents:
fd = kevent.ident
if kevent.filter == select.KQ_FILTER_READ:
events[fd] = events.get(fd, 0) | IOLoop.READ
if kevent.filter == select.KQ_FILTER_WRITE:
if kevent.flags & select.KQ_EV_EOF:
# If an asynchronous connection is refused, kqueue
# returns a write event with the EOF flag set.
# Turn this into an error for consistency with the
# other IOLoop implementations.
# Note that for read events, EOF may be returned before
# all data has been consumed from the socket buffer,
# so we only check for EOF on write events.
events[fd] = IOLoop.ERROR
else:
events[fd] = events.get(fd, 0) | IOLoop.WRITE
if kevent.flags & select.KQ_EV_ERROR:
events[fd] = events.get(fd, 0) | IOLoop.ERROR
return events.items()
示例2: poll
# 需要导入模块: import select [as 别名]
# 或者: from select import KQ_EV_EOF [as 别名]
def poll(self, timeout=None):
events = self.kqueue.control(self.events, 128, timeout)
rv = []
for ev in events:
obj = self.event_to_object.get(ev.ident)
if obj is None:
# It happens surprisingly frequently that kqueue returns
# write events things no longer in the kqueue. Not sure
# why
continue
if ev.filter == select.KQ_FILTER_READ:
rv.append((obj, 'read'))
elif ev.filter == select.KQ_FILTER_WRITE:
rv.append((obj, 'write'))
if ev.flags & select.KQ_EV_EOF:
rv.append((obj, 'close'))
return rv
示例3: _is_closed_kqueue
# 需要导入模块: import select [as 别名]
# 或者: from select import KQ_EV_EOF [as 别名]
def _is_closed_kqueue(f):
kqueue = select.kqueue()
event = select.kevent(
f.fileno(), filter=select.KQ_FILTER_READ,
flags=select.KQ_EV_ADD | select.KQ_EV_ENABLE)
for event in kqueue.control([event], 128, 0.0):
if event.flags & select.KQ_EV_EOF:
return True
return False
示例4: poll
# 需要导入模块: import select [as 别名]
# 或者: from select import KQ_EV_EOF [as 别名]
def poll(self,
timeout,
_len=len,
_READ=select.KQ_FILTER_READ,
_WRITE=select.KQ_FILTER_WRITE,
_EOF=select.KQ_EV_EOF,
_ERROR=select.KQ_EV_ERROR):
try:
kevents = self._kqueue.control(None, _len(self.socket_map),
timeout)
except OSError as err:
if err.errno == errno.EINTR:
return
raise
for kevent in kevents:
inst = self.socket_map.get(kevent.ident)
if inst is None:
continue
if kevent.filter == _READ:
if inst.readable():
_read(inst)
if kevent.filter == _WRITE:
if kevent.flags & _EOF:
# If an asynchronous connection is refused,
# kqueue returns a write event with the EOF
# flag set.
# Note that for read events, EOF may be returned
# before all data has been consumed from the
# socket buffer, so we only check for EOF on
# write events.
inst.handle_close()
else:
if inst.writable():
_write(inst)
if kevent.flags & _ERROR:
inst.handle_close()
# ===================================================================
# --- choose the better poller for this platform
# ===================================================================
示例5: _doWriteOrRead
# 需要导入模块: import select [as 别名]
# 或者: from select import KQ_EV_EOF [as 别名]
def _doWriteOrRead(self, selectable, fd, event):
"""
Private method called when a FD is ready for reading, writing or was
lost. Do the work and raise errors where necessary.
"""
why = None
inRead = False
(filter, flags, data, fflags) = (
event.filter, event.flags, event.data, event.fflags)
if flags & KQ_EV_EOF and data and fflags:
why = main.CONNECTION_LOST
else:
try:
if selectable.fileno() == -1:
inRead = False
why = posixbase._NO_FILEDESC
else:
if filter == KQ_FILTER_READ:
inRead = True
why = selectable.doRead()
if filter == KQ_FILTER_WRITE:
inRead = False
why = selectable.doWrite()
except:
# Any exception from application code gets logged and will
# cause us to disconnect the selectable.
why = failure.Failure()
log.err(why, "An exception was raised from application code" \
" while processing a reactor selectable")
if why:
self._disconnectSelectable(selectable, why, inRead)
示例6: doPoll
# 需要导入模块: import select [as 别名]
# 或者: from select import KQ_EV_EOF [as 别名]
def doPoll(self, block):
eventList = self.__kqueue.control(
None,
self.getNumFDs() * 2,
None if block else 0)
for ke in eventList:
fd = ke.ident
readReady = (ke.filter == select.KQ_FILTER_READ)
writeReady = (ke.filter == select.KQ_FILTER_WRITE)
errorReady = ((ke.flags & select.KQ_EV_EOF) != 0)
self.handleEventForFD(fd = fd,
readReady = readReady,
writeReady = writeReady,
errorReady = errorReady)
示例7: start
# 需要导入模块: import select [as 别名]
# 或者: from select import KQ_EV_EOF [as 别名]
def start(self):
while True:
eventlist = self.kq.control(None, 100, 1)
for event in eventlist:
send = True
if event.flags & select.KQ_EV_ERROR:
send = self.onSocketEvent(event.ident, sockConnect.socketEventExcept)
elif event.filter == select.KQ_FILTER_READ:
send = self.onSocketEvent(event.ident, sockConnect.socketEventCanRecv)
elif event.filter == select.KQ_FILTER_WRITE:
if event.flags & select.KQ_EV_EOF:
send = self.onSocketEvent(event.ident, sockConnect.socketEventExcept)
else:
send = self.onSocketEvent(event.ident, sockConnect.socketEventCanSend)
if not send:
try:
self.kq.control([select.kevent(event.ident, filter=select.KQ_FILTER_WRITE,
flags=select.KQ_EV_DELETE)], 0)
except:
pass
try:
self.kq.control([select.kevent(event.ident, filter=select.KQ_FILTER_READ,
flags=select.KQ_EV_DELETE)], 0)
except:
pass
self._handlerCallback()
示例8: poll
# 需要导入模块: import select [as 别名]
# 或者: from select import KQ_EV_EOF [as 别名]
def poll(self, timeout):
for event in self._kq.control(None, 100, timeout):
yield ProcPollEvent(fd=event.ident,
can_read=True,
is_terminated=event.flags & select.KQ_EV_EOF)