+
+ def getStats(self):
+ """See L{apt_p2p.interfaces.IDHTStats}."""
+ return self.khashmir.getStats()
+
+ def getStatsFactory(self):
+ """See L{apt_p2p.interfaces.IDHTStatsFactory}."""
+ assert _web2, "NOT IMPLEMENTED: twisted.web2 must be installed to use the stats factory."
+ if self.factory is None:
+ # Create a simple HTTP factory for stats
+ class StatsResource(resource.Resource):
+ def __init__(self, manager):
+ self.manager = manager
+ def render(self, ctx):
+ return http.Response(
+ 200,
+ {'content-type': http_headers.MimeType('text', 'html')},
+ '<html><body>\n\n' + self.manager.getStats() + '\n</body></html>\n')
+ def locateChild(self, request, segments):
+ log.msg('Got HTTP stats request from %s' % (request.remoteAddr, ))
+ return self, ()
+
+ self.factory = channel.HTTPFactory(server.Site(StatsResource(self)))
+ return self.factory
+