~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/smart/protocol.py

  • Committer: Jelmer Vernooij
  • Date: 2011-12-16 16:40:10 UTC
  • mto: This revision was merged to the branch mainline in revision 6391.
  • Revision ID: jelmer@samba.org-20111216164010-z3hy00xrnclnkf7a
Update tests.

Show diffs side-by-side

added added

removed removed

Lines of Context:
654
654
        """Make a remote call with a readv array.
655
655
 
656
656
        The body is encoded with one line per readv offset pair. The numbers in
657
 
        each pair are separated by a comma, and no trailing \n is emitted.
 
657
        each pair are separated by a comma, and no trailing \\n is emitted.
658
658
        """
659
659
        if 'hpss' in debug.debug_flags:
660
660
            mutter('hpss call w/readv: %s', repr(args)[1:-1])
1081
1081
        self._real_write_func = write_func
1082
1082
 
1083
1083
    def _write_func(self, bytes):
1084
 
        # TODO: It is probably more appropriate to use sum(map(len, _buf))
1085
 
        #       for total number of bytes to write, rather than buffer based on
1086
 
        #       the number of write() calls
1087
1084
        # TODO: Another possibility would be to turn this into an async model.
1088
1085
        #       Where we let another thread know that we have some bytes if
1089
1086
        #       they want it, but we don't actually block for it
1292
1289
        _ProtocolThreeEncoder.__init__(self, medium_request.accept_bytes)
1293
1290
        self._medium_request = medium_request
1294
1291
        self._headers = {}
 
1292
        self.body_stream_started = None
1295
1293
 
1296
1294
    def set_headers(self, headers):
1297
1295
        self._headers = headers.copy()
1332
1330
        """Make a remote call with a readv array.
1333
1331
 
1334
1332
        The body is encoded with one line per readv offset pair. The numbers in
1335
 
        each pair are separated by a comma, and no trailing \n is emitted.
 
1333
        each pair are separated by a comma, and no trailing \\n is emitted.
1336
1334
        """
1337
1335
        if 'hpss' in debug.debug_flags:
1338
1336
            mutter('hpss call w/readv: %s', repr(args)[1:-1])
1357
1355
            if path is not None:
1358
1356
                mutter('                  (to %s)', path)
1359
1357
            self._request_start_time = osutils.timer_func()
 
1358
        self.body_stream_started = False
1360
1359
        self._write_protocol_version()
1361
1360
        self._write_headers(self._headers)
1362
1361
        self._write_structure(args)
1364
1363
        #       have finished sending the stream.  We would notice at the end
1365
1364
        #       anyway, but if the medium can deliver it early then it's good
1366
1365
        #       to short-circuit the whole request...
 
1366
        # Provoke any ConnectionReset failures before we start the body stream.
 
1367
        self.flush()
 
1368
        self.body_stream_started = True
1367
1369
        for exc_info, part in _iter_with_errors(stream):
1368
1370
            if exc_info is not None:
1369
1371
                # Iterating the stream failed.  Cleanly abort the request.