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