| 288 | |
| 289 | |
| 290 | class RWPair: |
| 291 | def __init__(self, r, w): |
| 292 | self.r = r |
| 293 | self.w = w |
| 294 | self.read = r.read |
| 295 | self.readline = r.readline |
| 296 | self.write = w.write |
| 297 | self.flush = w.flush |
| 298 | |
| 299 | def close(self): |
| 300 | for f in self.r, self.w: |
| 301 | try: |
| 302 | f.close() |
| 303 | except Exception: |
| 304 | pass |
| 305 | |
| 306 | |
| 307 | class SocketRWShim: |