~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/smart/protocol.py

  • Committer: Ian Clatworthy
  • Date: 2007-08-14 03:59:22 UTC
  • mto: (2733.1.1 ianc-integration)
  • mto: This revision was merged to the branch mainline in revision 2734.
  • Revision ID: ian.clatworthy@internode.on.net-20070814035922-siavg542cwvkf4r5
Fix pretty doc generation so works for all html docs

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
client and server.
19
19
"""
20
20
 
21
 
 
22
21
from cStringIO import StringIO
 
22
import time
23
23
 
24
24
from bzrlib import debug
25
25
from bzrlib import errors
26
26
from bzrlib.smart import request
27
 
from bzrlib.trace import mutter
 
27
from bzrlib.trace import log_exception_quietly, mutter
28
28
 
29
29
 
30
30
# Protocol version strings.  These are sent as prefixes of bzr requests and
110
110
                raise
111
111
            except Exception, exception:
112
112
                # everything else: pass to client, flush, and quit
 
113
                log_exception_quietly()
113
114
                self._send_response(request.FailedSmartServerResponse(
114
115
                    ('error', str(exception))))
115
116
                return
299
300
        """
300
301
        self._request = request
301
302
        self._body_buffer = None
 
303
        self._request_start_time = None
302
304
 
303
305
    def call(self, *args):
304
306
        if 'hpss' in debug.debug_flags:
305
 
            mutter('hpss call: %r', args)
 
307
            mutter('hpss call:   %s', repr(args)[1:-1])
 
308
            self._request_start_time = time.time()
306
309
        self._write_args(args)
307
310
        self._request.finished_writing()
308
311
 
312
315
        After calling this, call read_response_tuple to find the result out.
313
316
        """
314
317
        if 'hpss' in debug.debug_flags:
315
 
            mutter('hpss call w/body: %r (%r...)', args, body[:20])
 
318
            mutter('hpss call w/body: %s (%r...)', repr(args)[1:-1], body[:20])
 
319
            mutter('              %d bytes', len(body))
 
320
            self._request_start_time = time.time()
316
321
        self._write_args(args)
317
322
        bytes = self._encode_bulk_data(body)
318
323
        self._request.accept_bytes(bytes)
325
330
        each pair are separated by a comma, and no trailing \n is emitted.
326
331
        """
327
332
        if 'hpss' in debug.debug_flags:
328
 
            mutter('hpss call w/readv: %r', args)
 
333
            mutter('hpss call w/readv: %s', repr(args)[1:-1])
 
334
            self._request_start_time = time.time()
329
335
        self._write_args(args)
330
336
        readv_bytes = self._serialise_offsets(body)
331
337
        bytes = self._encode_bulk_data(readv_bytes)
332
338
        self._request.accept_bytes(bytes)
333
339
        self._request.finished_writing()
 
340
        if 'hpss' in debug.debug_flags:
 
341
            mutter('              %d bytes in readv request', len(readv_bytes))
334
342
 
335
343
    def cancel_read_body(self):
336
344
        """After expecting a body, a response code may indicate one otherwise.
348
356
        """
349
357
        result = self._recv_tuple()
350
358
        if 'hpss' in debug.debug_flags:
351
 
            mutter('hpss result: %r', result)
 
359
            if self._request_start_time is not None:
 
360
                mutter('   result:   %6.3fs  %s',
 
361
                       time.time() - self._request_start_time,
 
362
                       repr(result)[1:-1])
 
363
                self._request_start_time = None
 
364
            else:
 
365
                mutter('   result:   %s', repr(result)[1:-1])
352
366
        if not expect_body:
353
367
            self._request.finished_reading()
354
368
        return result
370
384
        self._request.finished_reading()
371
385
        self._body_buffer = StringIO(_body_decoder.read_pending_data())
372
386
        # XXX: TODO check the trailer result.
 
387
        if 'hpss' in debug.debug_flags:
 
388
            mutter('              %d body bytes read',
 
389
                   len(self._body_buffer.getvalue()))
373
390
        return self._body_buffer.read(count)
374
391
 
375
392
    def _recv_tuple(self):