~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/smart.py

  • Committer: Andrew Bennetts
  • Date: 2007-03-28 07:08:42 UTC
  • mfrom: (2380 +trunk)
  • mto: (2018.5.146 hpss)
  • mto: This revision was merged to the branch mainline in revision 2414.
  • Revision ID: andrew.bennetts@canonical.com-20070328070842-r843houy668oxb9o
Merge from bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
197
197
from cStringIO import StringIO
198
198
import os
199
199
import socket
 
200
import sys
200
201
import tempfile
201
202
import threading
202
203
import urllib
223
224
del scheme
224
225
 
225
226
 
 
227
# Port 4155 is the default port for bzr://, registered with IANA.
 
228
BZR_DEFAULT_PORT = 4155
 
229
 
 
230
 
226
231
def _recv_tuple(from_file):
227
232
    req_line = from_file.readline()
228
233
    return _decode_tuple(req_line)
540
545
        :param backing_transport: Transport for the directory served.
541
546
        """
542
547
        SmartServerStreamMedium.__init__(self, backing_transport)
 
548
        if sys.platform == 'win32':
 
549
            # force binary mode for files
 
550
            import msvcrt
 
551
            for f in (in_file, out_file):
 
552
                fileno = getattr(f, 'fileno', None)
 
553
                if fileno:
 
554
                    msvcrt.setmode(fileno(), os.O_BINARY)
543
555
        self._in = in_file
544
556
        self._out = out_file
545
557
 
867
879
 
868
880
    def stop_background_thread(self):
869
881
        self._should_terminate = True
 
882
        # At one point we would wait to join the threads here, but it looks
 
883
        # like they don't actually exit.  So now we just leave them running
 
884
        # and expect to terminate the process. -- mbp 20070215
870
885
        # self._server_socket.close()
871
 
        # we used to join the thread, but it's not really necessary; it will
872
 
        # terminate in time
 
886
        ## sys.stderr.write("waiting for server thread to finish...")
873
887
        ## self._server_thread.join()
874
888
 
875
889
 
1729
1743
    def __init__(self, url):
1730
1744
        _scheme, _username, _password, _host, _port, _path = \
1731
1745
            transport.split_url(url)
1732
 
        try:
1733
 
            _port = int(_port)
1734
 
        except (ValueError, TypeError), e:
1735
 
            raise errors.InvalidURL(path=url, extra="invalid port %s" % _port)
 
1746
        if _port is None:
 
1747
            _port = BZR_DEFAULT_PORT
 
1748
        else:
 
1749
            try:
 
1750
                _port = int(_port)
 
1751
            except (ValueError, TypeError), e:
 
1752
                raise errors.InvalidURL(
 
1753
                    path=url, extra="invalid port %s" % _port)
1736
1754
        medium = SmartTCPClientMedium(_host, _port)
1737
1755
        super(SmartTCPTransport, self).__init__(url, medium=medium)
1738
1756