equal
deleted
inserted
replaced
69 |
69 |
70 class _blockingreader(object): |
70 class _blockingreader(object): |
71 def __init__(self, wrapped): |
71 def __init__(self, wrapped): |
72 self._wrapped = wrapped |
72 self._wrapped = wrapped |
73 |
73 |
74 def __getattr__(self, attr): |
74 # Do NOT implement readinto() by making it delegate to |
75 return getattr(self._wrapped, attr) |
75 # _wrapped.readinto(), since that is unbuffered. The unpickler is fine |
|
76 # with just read() and readline(), so we don't need to implement it. |
|
77 |
|
78 def readline(self): |
|
79 return self._wrapped.readline() |
76 |
80 |
77 # issue multiple reads until size is fulfilled |
81 # issue multiple reads until size is fulfilled |
78 def read(self, size=-1): |
82 def read(self, size=-1): |
79 if size < 0: |
83 if size < 0: |
80 return self._wrapped.readall() |
84 return self._wrapped.readall() |
89 break |
93 break |
90 pos += ret |
94 pos += ret |
91 |
95 |
92 del view |
96 del view |
93 del buf[pos:] |
97 del buf[pos:] |
94 return buf |
98 return bytes(buf) |
95 |
99 |
96 |
100 |
97 else: |
101 else: |
98 |
102 |
99 def _blockingreader(wrapped): |
103 def _blockingreader(wrapped): |