kopia lustrzana https://github.com/micropython/micropython-lib
uasyncio: Add minimum esp8266 support
rodzic
6256ad69c0
commit
0f5d5cead7
|
@ -93,16 +93,16 @@ class EventLoop:
|
||||||
# self.add_reader(ret.obj.fileno(), lambda self, c, f: self.call_soon(c, f), self, cb, ret.obj)
|
# self.add_reader(ret.obj.fileno(), lambda self, c, f: self.call_soon(c, f), self, cb, ret.obj)
|
||||||
# self.add_reader(ret.obj.fileno(), lambda c, f: self.call_soon(c, f), cb, ret.obj)
|
# self.add_reader(ret.obj.fileno(), lambda c, f: self.call_soon(c, f), cb, ret.obj)
|
||||||
# self.add_reader(arg.fileno(), lambda cb: self.call_soon(cb), cb)
|
# self.add_reader(arg.fileno(), lambda cb: self.call_soon(cb), cb)
|
||||||
self.add_reader(arg.fileno(), cb)
|
self.add_reader(arg, cb)
|
||||||
continue
|
continue
|
||||||
elif isinstance(ret, IOWrite):
|
elif isinstance(ret, IOWrite):
|
||||||
# self.add_writer(arg.fileno(), lambda cb: self.call_soon(cb), cb)
|
# self.add_writer(arg.fileno(), lambda cb: self.call_soon(cb), cb)
|
||||||
self.add_writer(arg.fileno(), cb)
|
self.add_writer(arg, cb)
|
||||||
continue
|
continue
|
||||||
elif isinstance(ret, IOReadDone):
|
elif isinstance(ret, IOReadDone):
|
||||||
self.remove_reader(arg.fileno())
|
self.remove_reader(arg)
|
||||||
elif isinstance(ret, IOWriteDone):
|
elif isinstance(ret, IOWriteDone):
|
||||||
self.remove_writer(arg.fileno())
|
self.remove_writer(arg)
|
||||||
elif isinstance(ret, StopLoop):
|
elif isinstance(ret, StopLoop):
|
||||||
return arg
|
return arg
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -11,42 +11,42 @@ class EpollEventLoop(EventLoop):
|
||||||
self.poller = select.poll()
|
self.poller = select.poll()
|
||||||
self.objmap = {}
|
self.objmap = {}
|
||||||
|
|
||||||
def add_reader(self, fd, cb, *args):
|
def add_reader(self, sock, cb, *args):
|
||||||
if DEBUG and __debug__:
|
if DEBUG and __debug__:
|
||||||
log.debug("add_reader%s", (fd, cb, args))
|
log.debug("add_reader%s", (sock, cb, args))
|
||||||
if args:
|
if args:
|
||||||
self.poller.register(fd, select.POLLIN)
|
self.poller.register(sock, select.POLLIN)
|
||||||
self.objmap[fd] = (cb, args)
|
self.objmap[id(sock)] = (cb, args)
|
||||||
else:
|
else:
|
||||||
self.poller.register(fd, select.POLLIN)
|
self.poller.register(sock, select.POLLIN)
|
||||||
self.objmap[fd] = cb
|
self.objmap[id(sock)] = cb
|
||||||
|
|
||||||
def remove_reader(self, fd):
|
def remove_reader(self, sock):
|
||||||
if DEBUG and __debug__:
|
if DEBUG and __debug__:
|
||||||
log.debug("remove_reader(%s)", fd)
|
log.debug("remove_reader(%s)", sock)
|
||||||
self.poller.unregister(fd)
|
self.poller.unregister(sock)
|
||||||
del self.objmap[fd]
|
del self.objmap[id(sock)]
|
||||||
|
|
||||||
def add_writer(self, fd, cb, *args):
|
def add_writer(self, sock, cb, *args):
|
||||||
if DEBUG and __debug__:
|
if DEBUG and __debug__:
|
||||||
log.debug("add_writer%s", (fd, cb, args))
|
log.debug("add_writer%s", (sock, cb, args))
|
||||||
if args:
|
if args:
|
||||||
self.poller.register(fd, select.POLLOUT)
|
self.poller.register(sock, select.POLLOUT)
|
||||||
self.objmap[fd] = (cb, args)
|
self.objmap[id(sock)] = (cb, args)
|
||||||
else:
|
else:
|
||||||
self.poller.register(fd, select.POLLOUT)
|
self.poller.register(sock, select.POLLOUT)
|
||||||
self.objmap[fd] = cb
|
self.objmap[id(sock)] = cb
|
||||||
|
|
||||||
def remove_writer(self, fd):
|
def remove_writer(self, sock):
|
||||||
if DEBUG and __debug__:
|
if DEBUG and __debug__:
|
||||||
log.debug("remove_writer(%s)", fd)
|
log.debug("remove_writer(%s)", sock)
|
||||||
try:
|
try:
|
||||||
self.poller.unregister(fd)
|
self.poller.unregister(sock)
|
||||||
self.objmap.pop(fd, None)
|
self.objmap.pop(id(sock), None)
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
# StreamWriter.awrite() first tries to write to an fd,
|
# StreamWriter.awrite() first tries to write to a socket,
|
||||||
# and if that succeeds, yield IOWrite may never be called
|
# and if that succeeds, yield IOWrite may never be called
|
||||||
# for that fd, and it will never be added to poller. So,
|
# for that socket, and it will never be added to poller. So,
|
||||||
# ignore such error.
|
# ignore such error.
|
||||||
if e.args[0] != errno.ENOENT:
|
if e.args[0] != errno.ENOENT:
|
||||||
raise
|
raise
|
||||||
|
@ -63,8 +63,8 @@ class EpollEventLoop(EventLoop):
|
||||||
# Remove "if res" workaround after
|
# Remove "if res" workaround after
|
||||||
# https://github.com/micropython/micropython/issues/2716 fixed.
|
# https://github.com/micropython/micropython/issues/2716 fixed.
|
||||||
if res:
|
if res:
|
||||||
for fd, ev in res:
|
for sock, ev in res:
|
||||||
cb = self.objmap[fd]
|
cb = self.objmap[id(sock)]
|
||||||
if DEBUG and __debug__:
|
if DEBUG and __debug__:
|
||||||
log.debug("Calling IO callback: %r", cb)
|
log.debug("Calling IO callback: %r", cb)
|
||||||
if isinstance(cb, tuple):
|
if isinstance(cb, tuple):
|
||||||
|
|
Ładowanie…
Reference in New Issue