Python uselect.POLLIN Examples
The following are 14
code examples of uselect.POLLIN().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
uselect
, or try the search function
.
Example #1
Source File: client_r.py From micropython-samples with MIT License | 6 votes |
def run(): global success ok = True try: while ok: res = poller.ipoll(10) for sock, ev in res: if ev & select.POLLIN: r = sock.readline() print(ev, r) # A server outage prints 1, b'' forever on ESP8266 or Unix. # If killer closes socket on ESP8266 ev is always 1, # on Unix get ev == 32 # Never see 9 or 17 (base 10) which are the error responses expected by uasyncio # (POLLIN & POLLERR or POLLIN & POLLHUP) else: # The only way I can make it work (on Unix) is to quit on 32 print('Terminating event:', ev) # What is 32?? ok = False break await asyncio.sleep(0) except OSError: print('Got OSError') # Never happens success = True # Detected socket closure or error by OSError or event
Example #2
Source File: userver.py From micropython-async with MIT License | 6 votes |
def run(self, loop, port=8123): addr = socket.getaddrinfo('0.0.0.0', port, 0, socket.SOCK_STREAM)[0][-1] s_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # server socket s_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s_sock.bind(addr) s_sock.listen(5) self.socks = [s_sock] # List of current sockets for .close() print('Awaiting connection on port', port) poller = select.poll() poller.register(s_sock, select.POLLIN) client_id = 1 # For user feedback while True: res = poller.poll(1) # 1ms block if res: # Only s_sock is polled c_sock, _ = s_sock.accept() # get client socket loop.create_task(self.run_client(c_sock, client_id)) client_id += 1 await asyncio.sleep_ms(200)
Example #3
Source File: __init__.py From uPyCam with Apache License 2.0 | 5 votes |
def add_reader(self, sock, cb, *args): if DEBUG and __debug__: log.debug("add_reader%s", (sock, cb, args)) if args: self.poller.register(sock, select.POLLIN) self.objmap[id(sock)] = (cb, args) else: self.poller.register(sock, select.POLLIN) self.objmap[id(sock)] = cb
Example #4
Source File: main.py From uPyEcho with Apache License 2.0 | 5 votes |
def add(self, target, socket=None): if not socket: socket = target.sockets() if self.use_poll: self.poller.register(socket, select.POLLIN) # dbg("add device on fileno: %s" % socket.fileno() ) self.targets[socket.fileno()] = target # dbg("size targets: %s" % len(self.targets))
Example #5
Source File: server.py From micropython-iot with MIT License | 5 votes |
def run(expected, verbose=False, port=8123, timeout=2000): addr = socket.getaddrinfo('0.0.0.0', port, 0, socket.SOCK_STREAM)[0][-1] s_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # server socket s_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s_sock.bind(addr) s_sock.listen(len(expected) + 2) verbose and print('Awaiting connection.', port) poller = select.poll() poller.register(s_sock, select.POLLIN) to_secs = timeout / 1000 # ms -> secs while True: res = poller.poll(1) # 1ms block if res: # Only s_sock is polled c_sock, _ = s_sock.accept() # get client socket c_sock.setblocking(False) try: data = await _readid(c_sock, to_secs) except OSError: c_sock.close() else: Connection.go(to_secs, data, verbose, c_sock, s_sock, expected) await asyncio.sleep(0.2) # A Connection persists even if client dies (minimise object creation). # If client dies Connection is closed: ._close() flags this state by closing its # socket and setting .sock to None (.status() == False).
Example #6
Source File: __init__.py From micropython-samples with MIT License | 5 votes |
def add_reader(self, sock, cb, *args): if DEBUG and __debug__: log.debug("add_reader%s", (sock, cb, args)) if args: self.poller.register(sock, select.POLLIN) self.objmap[id(sock)] = (cb, args) else: self.poller.register(sock, select.POLLIN) self.objmap[id(sock)] = cb
Example #7
Source File: __init__.py From microdot with MIT License | 5 votes |
def add_reader(self, sock, cb, *args): if DEBUG and __debug__: log.debug("add_reader%s", (sock, cb, args)) if args: self.poller.register(sock, select.POLLIN) self.objmap[id(sock)] = (cb, args) else: self.poller.register(sock, select.POLLIN) self.objmap[id(sock)] = cb
Example #8
Source File: ws_connection.py From upy-websocket-server with MIT License | 5 votes |
def __init__(self, addr, s, close_callback): self.client_close = False self._need_check = False self.address = addr self.socket = s self.ws = websocket(s, True) self.poll = uselect.poll() self.close_callback = close_callback self.socket.setblocking(False) self.poll.register(self.socket, uselect.POLLIN)
Example #9
Source File: ws_server.py From upy-websocket-server with MIT License | 5 votes |
def _check_new_connections(self, accept_handler): poll_events = self._listen_poll.poll(0) if not poll_events: return if poll_events[0][1] & uselect.POLLIN: accept_handler()
Example #10
Source File: __init__.py From pysmartnode with MIT License | 5 votes |
def add_reader(self, sock, cb, *args): if DEBUG and __debug__: log.debug("add_reader%s", (sock, cb, args)) if args: self.poller.register(sock, select.POLLIN) self.objmap[id(sock)] = (cb, args) else: self.poller.register(sock, select.POLLIN) self.objmap[id(sock)] = cb
Example #11
Source File: __init__.py From micropython-async with MIT License | 5 votes |
def add_reader(self, sock, cb, *args): if DEBUG and __debug__: log.debug("add_reader%s", (sock, cb, args)) # HACK This should read # self._register(sock, select.POLLIN) # Temporary workround for https://github.com/micropython/micropython/issues/5172 # The following is not compliant with POSIX or with the docs self._register(sock, select.POLLIN | select.POLLHUP | select.POLLERR) # t35tB0t add HUP and ERR to force LWIP revents if args: self.rdobjmap[id(sock)] = (cb, args) else: self.rdobjmap[id(sock)] = cb
Example #12
Source File: __init__.py From micropython-async with MIT License | 5 votes |
def remove_reader(self, sock): if DEBUG and __debug__: log.debug("remove_reader(%s)", sock) self._unregister(sock, self.rdobjmap, select.POLLIN)
Example #13
Source File: __init__.py From microhomie with MIT License | 5 votes |
def add_reader(self, sock, cb, *args): if DEBUG and __debug__: log.debug("add_reader%s", (sock, cb, args)) if args: self.poller.register(sock, select.POLLIN) self.objmap[id(sock)] = (cb, args) else: self.poller.register(sock, select.POLLIN) self.objmap[id(sock)] = cb
Example #14
Source File: __init__.py From micropython-async with MIT License | 4 votes |
def wait(self, delay): if DEBUG and __debug__: log.debug("poll.wait(%d)", delay) # We need one-shot behavior (second arg of 1 to .poll()) res = self.poller.ipoll(delay, 1) #log.debug("poll result: %s", res) for sock, ev in res: if ev & select.POLLOUT: cb = self.wrobjmap[id(sock)] if cb is None: continue # Not yet ready. # Invalidate objmap: can get adverse timing in fast_io whereby add_writer # is not called soon enough. Ignore poll events occurring before we are # ready to handle them. self.wrobjmap[id(sock)] = None if ev & (select.POLLHUP | select.POLLERR): # These events are returned even if not requested, and # are sticky, i.e. will be returned again and again. # If the caller doesn't do proper error handling and # unregister this sock, we'll busy-loop on it, so we # as well can unregister it now "just in case". self.remove_writer(sock) if DEBUG and __debug__: log.debug("Calling IO callback: %r", cb) if isinstance(cb, tuple): cb[0](*cb[1]) else: prev = cb.pend_throw(None) # Enable task to run. #if isinstance(prev, Exception): #print('Put back exception') #cb.pend_throw(prev) self._call_io(cb) # Put coro onto runq (or ioq if one exists) if ev & select.POLLIN: cb = self.rdobjmap[id(sock)] if cb is None: continue self.rdobjmap[id(sock)] = None if ev & (select.POLLHUP | select.POLLERR): # These events are returned even if not requested, and # are sticky, i.e. will be returned again and again. # If the caller doesn't do proper error handling and # unregister this sock, we'll busy-loop on it, so we # as well can unregister it now "just in case". self.remove_reader(sock) if DEBUG and __debug__: log.debug("Calling IO callback: %r", cb) if isinstance(cb, tuple): cb[0](*cb[1]) else: prev = cb.pend_throw(None) # Enable task to run. #if isinstance(prev, Exception): #cb.pend_throw(prev) #print('Put back exception') self._call_io(cb)