2 from twisted.web2.client import http
3 from twisted.internet.defer import Deferred
5 class HTTPClientManager(object):
6 """A manager for all HTTP requests to a site.
11 implements(IHTTPClientManager)
13 def __init__(self, host, port):
16 self.client = http.HTTPClientProtocol(self)
20 self.pending_requests = []
23 uri = 'http://' + self.host + ':' + self.port + path
24 request = http.ClientRequest('GET', uri, {}, None)
25 request.responseDefer = Deferred()
26 self.pending_requests.append(request)
30 return request.responseDefer
32 def _submitRequest(self):
33 assert self.pending_requests
36 self.client = http.HTTPClientProtocol(self)
38 request = self.pending_requests.pop()
39 d = self.client.submitRequest(request, False)
40 d.addCallback(request.responseDefer.callback)
42 def clientBusy(self, proto):
45 def clientIdle(self, proto):
47 if self.pending_requests:
50 def clientPipelining(self, proto):
53 def clientGone(self, proto):
58 if self.pending_requests: