| 30 | print('Task done') |
| 31 | |
| 32 | class GenSocket: |
| 33 | def __init__(self, sock): |
| 34 | self.sock = sock |
| 35 | |
| 36 | @coroutine |
| 37 | def accept(self): |
| 38 | yield 'recv', self.sock |
| 39 | client, addr = self.sock.accept() |
| 40 | return GenSocket(client), addr |
| 41 | |
| 42 | @coroutine |
| 43 | def recv(self, maxsize): |
| 44 | yield 'recv', self.sock |
| 45 | return self.sock.recv(maxsize) |
| 46 | |
| 47 | @coroutine |
| 48 | def send(self, data): |
| 49 | yield 'send', self.sock |
| 50 | return self.sock.send(data) |
| 51 | |
| 52 | def __getattr__(self, name): |
| 53 | return getattr(self.sock, name) |
| 54 | |
| 55 | async def tcp_server(address, handler): |
| 56 | sock = GenSocket(socket(AF_INET, SOCK_STREAM)) |
no outgoing calls
no test coverage detected