/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: Andrew Bennetts
  • Date: 2008-02-12 01:56:09 UTC
  • mto: (3245.4.1 Version 3 implementation.)
  • mto: This revision was merged to the branch mainline in revision 3428.
  • Revision ID: andrew.bennetts@canonical.com-20080212015609-loaxv5te0eb6uot8
Make the general request handler dispatch version 3 events to the specific request handler (i.e. to the SmartServerRequest instance).

Show diffs side-by-side

added added

removed removed

Lines of Context:
663
663
        self._request.finished_reading()
664
664
 
665
665
 
666
 
class SmartServerRequestProtocolThree(_StatefulDecoder, SmartServerRequestProtocolTwo):
 
666
class SmartServerRequestProtocolThree(_StatefulDecoder):
667
667
 
668
668
    response_marker = RESPONSE_VERSION_THREE
669
669
    request_marker = REQUEST_VERSION_THREE
670
670
 
671
 
    def __init__(self, backing_transport, write_func):
 
671
    def __init__(self, backing_transport, write_func, request_registry=None):
672
672
        _StatefulDecoder.__init__(self)
673
673
        self._backing_transport = backing_transport
674
674
        self._write_func = write_func
679
679
        # Initial state
680
680
        self.state_accept = self._state_accept_expecting_headers
681
681
 
 
682
        if request_registry is None:
 
683
            request_registry = request.request_handlers
682
684
        self.request_handler = request.SmartServerRequestHandler(
683
 
            self._backing_transport, commands=request.request_handlers)
 
685
            self._backing_transport, commands=request_registry)
684
686
 
685
687
#        self.excess_buffer = ''
686
688
#        self._finished = False
729
731
        if type(decoded) is not list:
730
732
            raise errors.SmartProtocolError(
731
733
                'Request arguments %r not sequence' % (decoded,))
 
734
        if len(decoded) < 1:
 
735
            raise errors.SmartProtocolError('Empty argument sequence')
732
736
        self.state_accept = self._state_accept_expecting_body_kind
733
737
        self.request_handler.args_received(decoded)
734
738
 
755
759
 
756
760
    def done(self):
757
761
        self.state_accept = self._state_accept_reading_unused
758
 
        #xxx_dispatch_request()
 
762
        self.request_handler.end_received()
759
763
 
760
764
    def _state_accept_expecting_prefixed_body(self, bytes):
 
765
        # XXX: we could make this stream the body directly to the request,
 
766
        # rather than buffering.
761
767
        self._in_buffer += bytes
762
768
        body = self._extract_length_prefixed_bytes()
763
769
        if body is None: