commandserver: add _readstr and _readlist
Reading a string or a list are common operations for commandserver and
chgserver. This patch adds _readstr and _readlist to avoid duplication.
--- a/mercurial/commandserver.py Wed Feb 10 16:59:34 2016 +0000
+++ b/mercurial/commandserver.py Tue Feb 16 19:11:45 2016 +0000
@@ -190,6 +190,25 @@
return data
+ def _readstr(self):
+ """read a string from the channel
+
+ format:
+ data length (uint32), data
+ """
+ length = struct.unpack('>I', self._read(4))[0]
+ if not length:
+ return ''
+ return self._read(length)
+
+ def _readlist(self):
+ """read a list of NULL separated strings from the channel"""
+ s = self._readstr()
+ if s:
+ return s.split('\0')
+ else:
+ return []
+
def runcommand(self):
""" reads a list of \0 terminated arguments, executes
and writes the return code to the result channel """