~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/smart/server.py

  • Committer: John Arbash Meinel
  • Date: 2007-07-05 19:39:28 UTC
  • mto: This revision was merged to the branch mainline in revision 2614.
  • Revision ID: john@arbash-meinel.com-20070705193928-xtm8nh4ucc8qosdn
Add direct tests of how we handle incomplete/'broken' lines

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
 
23
23
from bzrlib.hooks import Hooks
24
24
from bzrlib import (
25
 
    errors,
26
25
    trace,
27
26
    transport,
28
27
)
66
65
 
67
66
    def serve(self):
68
67
        self._should_terminate = False
69
 
        # for hooks we are letting code know that a server has started (and
70
 
        # later stopped).
71
 
        # There are three interesting urls:
72
 
        # The URL the server can be contacted on. (e.g. bzr://host/)
73
 
        # The URL that a commit done on the same machine as the server will
74
 
        # have within the servers space. (e.g. file:///home/user/source)
75
 
        # The URL that will be given to other hooks in the same process -
76
 
        # the URL of the backing transport itself. (e.g. chroot+:///)
77
 
        # We need all three because:
78
 
        #  * other machines see the first
79
 
        #  * local commits on this machine should be able to be mapped to
80
 
        #    this server 
81
 
        #  * commits the server does itself need to be mapped across to this
82
 
        #    server.
83
 
        # The latter two urls are different aliases to the servers url,
84
 
        # so we group those in a list - as there might be more aliases 
85
 
        # in the future.
86
 
        backing_urls = [self.backing_transport.base]
87
 
        try:
88
 
            backing_urls.append(self.backing_transport.external_url())
89
 
        except errors.InProcessTransport:
90
 
            pass
91
68
        for hook in SmartTCPServer.hooks['server_started']:
92
 
            hook(backing_urls, self.get_url())
 
69
            hook(self.backing_transport.base, self.get_url())
93
70
        self._started.set()
94
71
        try:
95
72
            try:
123
100
                # ignore errors on close
124
101
                pass
125
102
            for hook in SmartTCPServer.hooks['server_stopped']:
126
 
                hook(backing_urls, self.get_url())
 
103
                hook(self.backing_transport.base, self.get_url())
127
104
 
128
105
    def get_url(self):
129
106
        """Return the url of the server"""
186
163
        Hooks.__init__(self)
187
164
        # Introduced in 0.16:
188
165
        # invoked whenever the server starts serving a directory.
189
 
        # The api signature is (backing urls, public url).
 
166
        # The api signature is (backing url, public url).
190
167
        self['server_started'] = []
191
168
        # Introduced in 0.16:
192
169
        # invoked whenever the server stops serving a directory.
193
 
        # The api signature is (backing urls, public url).
 
170
        # The api signature is (backing url, public url).
194
171
        self['server_stopped'] = []
195
172
 
196
173
SmartTCPServer.hooks = SmartServerHooks()