/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/smart/protocol.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2009-03-05 07:07:34 UTC
  • mfrom: (4078.1.2 hpss-buffering)
  • Revision ID: pqm@pqm.ubuntu.com-20090305070734-voo8r5npkyz1dicx
Small improvement to write buffering of HPSS v3 messages. (Andrew
        Bennetts)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1060
1060
    response_marker = request_marker = MESSAGE_VERSION_THREE
1061
1061
 
1062
1062
    def __init__(self, write_func):
1063
 
        self._buf = ''
 
1063
        self._buf = []
1064
1064
        self._real_write_func = write_func
1065
1065
 
1066
1066
    def _write_func(self, bytes):
1067
 
        self._buf += bytes
 
1067
        self._buf.append(bytes)
 
1068
        if len(self._buf) > 100:
 
1069
            self.flush()
1068
1070
 
1069
1071
    def flush(self):
1070
1072
        if self._buf:
1071
 
            self._real_write_func(self._buf)
1072
 
            self._buf = ''
 
1073
            self._real_write_func(''.join(self._buf))
 
1074
            del self._buf[:]
1073
1075
 
1074
1076
    def _serialise_offsets(self, offsets):
1075
1077
        """Serialise a readv offset list."""
1165
1167
                    self._write_structure(error_struct)
1166
1168
                    break
1167
1169
                else:
 
1170
                    if isinstance(chunk, request.FailedSmartServerResponse):
 
1171
                        self._write_error_status()
 
1172
                        self._write_structure(chunk.args)
 
1173
                        break
1168
1174
                    self._write_prefixed_body(chunk)
1169
 
                    self.flush()
1170
1175
        self._write_end()
1171
1176
 
1172
1177