# HG changeset patch # User Gregory Szorc # Date 1522266275 25200 # Node ID 97eedbd5a56cf7d98b479604e16dc0a749356ffa # Parent 78103e4138b1076c55d99cd9029d7be56fdf9f5b keepalive: implement readinto() This is part of the standard I/O interface. It is used by the framing protocol. So we need to implement it so frames can be decoded. Differential Revision: https://phab.mercurial-scm.org/D2984 diff -r 78103e4138b1 -r 97eedbd5a56c mercurial/keepalive.py --- a/mercurial/keepalive.py Fri Mar 23 16:24:53 2018 -0700 +++ b/mercurial/keepalive.py Wed Mar 28 12:44:35 2018 -0700 @@ -349,7 +349,7 @@ class HTTPResponse(httplib.HTTPResponse): # we need to subclass HTTPResponse in order to - # 1) add readline() and readlines() methods + # 1) add readline(), readlines(), and readinto() methods # 2) add close_connection() methods # 3) add info() and geturl() methods @@ -522,6 +522,14 @@ break return list + def readinto(self, dest): + res = self.read(len(dest)) + if not res: + return 0 + + dest[0:len(res)] = res + return len(res) + def safesend(self, str): """Send `str' to the server.