Mercurial > public > mercurial-scm > hg
comparison mercurial/worker.py @ 49231:4d42a5fb70bf
worker: add docstring to _blockingreader
author | Manuel Jacob <me@manueljacob.de> |
---|---|
date | Sat, 21 May 2022 22:24:02 +0200 |
parents | 5d28246b9acc |
children | 4c57ce494a4e |
comparison
equal
deleted
inserted
replaced
49230:5d28246b9acc | 49231:4d42a5fb70bf |
---|---|
67 def ismainthread(): | 67 def ismainthread(): |
68 return threading.current_thread() == threading.main_thread() | 68 return threading.current_thread() == threading.main_thread() |
69 | 69 |
70 | 70 |
71 class _blockingreader: | 71 class _blockingreader: |
72 """Wrap unbuffered stream such that pickle.load() works with it. | |
73 | |
74 pickle.load() expects that calls to read() and readinto() read as many | |
75 bytes as requested. On EOF, it is fine to read fewer bytes. In this case, | |
76 pickle.load() raises an EOFError. | |
77 """ | |
78 | |
72 def __init__(self, wrapped): | 79 def __init__(self, wrapped): |
73 self._wrapped = wrapped | 80 self._wrapped = wrapped |
74 | 81 |
75 # Do NOT implement readinto() by making it delegate to | 82 # Do NOT implement readinto() by making it delegate to |
76 # _wrapped.readinto(), since that is unbuffered. The unpickler is fine | 83 # _wrapped.readinto(), since that is unbuffered. The unpickler is fine |
92 return pos | 99 return pos |
93 | 100 |
94 def readline(self): | 101 def readline(self): |
95 return self._wrapped.readline() | 102 return self._wrapped.readline() |
96 | 103 |
97 # issue multiple reads until size is fulfilled | 104 # issue multiple reads until size is fulfilled (or EOF is encountered) |
98 def read(self, size=-1): | 105 def read(self, size=-1): |
99 if size < 0: | 106 if size < 0: |
100 return self._wrapped.readall() | 107 return self._wrapped.readall() |
101 | 108 |
102 buf = bytearray(size) | 109 buf = bytearray(size) |