/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

Implement interrupting body streams with an error.

Show diffs side-by-side

added added

removed removed

Lines of Context:
997
997
        # XXX: warn if expect_body doesn't match the response?
998
998
        self._wait_for_request_end()
999
999
        if self.response_handler.error_args is not None:
1000
 
            self._translate_error()
 
1000
            _translate_error(self.response_handler.error_args)
1001
1001
            return self.response_handler.error_args
1002
1002
        return self.response_handler.args
1003
1003
 
1011
1011
        self._wait_for_request_end()
1012
1012
        return self.response_handler.prefixed_body.read(count)
1013
1013
 
1014
 
    def _translate_error(self, error_tuple):
1015
 
        # XXX: Hmm!  Need state from the request.  Hmm.
1016
 
        error_name = error_tuple[0]
1017
 
        error_args = error_tuple[1:]
1018
 
        if error_name == 'LockContention':
1019
 
            raise errors.LockContention('(remote lock)')
1020
 
        elif error_name == 'LockFailed':
1021
 
            raise errors.LockContention(*error_args[:2])
1022
 
        else:
1023
 
            return # XXX
1024
 
            raise errors.UnexpectedSmartServerResponse('Sucktitude: %r' %
1025
 
                    (error_tuple,))
 
1014
 
 
1015
def _translate_error(error_tuple):
 
1016
    # XXX: Hmm!  Need state from the request.  Hmm.
 
1017
    error_name = error_tuple[0]
 
1018
    error_args = error_tuple[1:]
 
1019
    if error_name == 'LockContention':
 
1020
        raise errors.LockContention('(remote lock)')
 
1021
    elif error_name == 'LockFailed':
 
1022
        raise errors.LockContention(*error_args[:2])
 
1023
    else:
 
1024
        return # XXX
 
1025
        raise errors.UnexpectedSmartServerResponse('Sucktitude: %r' %
 
1026
                (error_tuple,))
1026
1027
 
1027
1028
 
1028
1029
class _ProtocolThreeEncoder(object):