| 371 | self._select_func = getattr(select, 'cpython_compatible_select', select.select) |
| 372 | |
| 373 | def register(self, fileobj, events, data=None): |
| 374 | for sock, _ in self._sockets: |
| 375 | if sock is fileobj: |
| 376 | raise KeyError("{0!r} is already registered" |
| 377 | .format(fileobj, sock)) |
| 378 | |
| 379 | key = SelectorKey(fileobj, -1, events, data) |
| 380 | self._sockets.append((fileobj, key)) |
| 381 | |
| 382 | if events & EVENT_READ: |
| 383 | self._readers.append(fileobj) |
| 384 | if events & EVENT_WRITE: |
| 385 | self._writers.append(fileobj) |
| 386 | return key |
| 387 | |
| 388 | def unregister(self, fileobj): |
| 389 | for i, (sock, key) in enumerate(self._sockets): |