~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/remote.py

Extract a simple SmartClient class from RemoteTransport, and a hack to avoid VFS operations when probing for a bzrdir over a smart transport.

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
    errors,
31
31
    transport,
32
32
    )
33
 
from bzrlib.smart import medium, protocol
 
33
from bzrlib.smart import client, medium, protocol
34
34
 
35
35
# must do this otherwise urllib can't parse the urls properly :(
36
36
for scheme in ['ssh', 'bzr', 'bzr+loopback', 'bzr+ssh']:
147
147
 
148
148
    def _call2(self, method, *args):
149
149
        """Call a method on the remote server."""
150
 
        request = self._medium.get_request()
151
 
        smart_protocol = protocol.SmartClientRequestProtocolOne(request)
152
 
        smart_protocol.call(method, *args)
153
 
        return smart_protocol.read_response_tuple()
 
150
        return client.SmartClient(self._medium).call(method, *args)
154
151
 
155
152
    def _call_with_body_bytes(self, method, args, body):
156
153
        """Call a method on the remote server with body bytes."""
157
 
        request = self._medium.get_request()
158
 
        smart_protocol = protocol.SmartClientRequestProtocolOne(request)
159
 
        smart_protocol.call_with_body_bytes((method, ) + args, body)
160
 
        return smart_protocol.read_response_tuple()
 
154
        smart_client = client.SmartClient(self._medium)
 
155
        return smart_client.call_with_body_bytes((method, ) + args, body)
161
156
 
162
157
    def has(self, relpath):
163
158
        """Indicate whether a remote file of the given name exists or not.