move channel-pruning responsibility down into Relay

This commit is contained in:
Brian Warner 2015-10-04 15:49:06 -07:00
parent b2336591a7
commit 2da94d5069
2 changed files with 9 additions and 10 deletions

View File

@ -1,6 +1,7 @@
from __future__ import print_function from __future__ import print_function
import re, json, time, random import re, json, time, random
from twisted.python import log from twisted.python import log
from twisted.application import service, internet
from twisted.web import server, resource, http from twisted.web import server, resource, http
SECONDS = 1.0 SECONDS = 1.0
@ -10,6 +11,7 @@ DAY = 24*HOUR
MB = 1000*1000 MB = 1000*1000
CHANNEL_EXPIRATION_TIME = 3*DAY CHANNEL_EXPIRATION_TIME = 3*DAY
EXPIRATION_CHECK_PERIOD = 2*HOUR
class EventsProtocol: class EventsProtocol:
def __init__(self, request): def __init__(self, request):
@ -191,12 +193,17 @@ class ChannelList(resource.Resource):
"channel-ids": allocated} "channel-ids": allocated}
return (json.dumps(data)+"\n").encode("utf-8") return (json.dumps(data)+"\n").encode("utf-8")
class Relay(resource.Resource): class Relay(resource.Resource, service.MultiService):
def __init__(self, db, welcome): def __init__(self, db, welcome):
resource.Resource.__init__(self) resource.Resource.__init__(self)
service.MultiService.__init__(self)
self.db = db self.db = db
self.welcome = welcome self.welcome = welcome
self.channels = {} self.channels = {}
t = internet.TimerService(EXPIRATION_CHECK_PERIOD,
self.prune_old_channels)
t.setServiceParent(self)
def getChild(self, path, request): def getChild(self, path, request):
if path == b"allocate": if path == b"allocate":

View File

@ -1,6 +1,6 @@
from __future__ import print_function from __future__ import print_function
from twisted.internet import reactor, endpoints from twisted.internet import reactor, endpoints
from twisted.application import service, internet from twisted.application import service
from twisted.web import server, static, resource from twisted.web import server, static, resource
from ..util.endpoint_service import ServerEndpointService from ..util.endpoint_service import ServerEndpointService
from .. import __version__ from .. import __version__
@ -8,11 +8,6 @@ from ..database import get_db
from .relay_server import Relay from .relay_server import Relay
from .transit_server import Transit from .transit_server import Transit
SECONDS = 1.0
MINUTE = 60*SECONDS
HOUR = 60*MINUTE
EXPIRATION_CHECK_PERIOD = 2*HOUR
class Root(resource.Resource): class Root(resource.Resource):
# child_FOO is a nevow thing, not a twisted.web.resource thing # child_FOO is a nevow thing, not a twisted.web.resource thing
def __init__(self): def __init__(self):
@ -42,9 +37,6 @@ class RelayServer(service.MultiService):
self.relayport_service.setServiceParent(self) self.relayport_service.setServiceParent(self)
self.relay = Relay(self.db, welcome) # accessible from tests self.relay = Relay(self.db, welcome) # accessible from tests
self.root.putChild(b"wormhole-relay", self.relay) self.root.putChild(b"wormhole-relay", self.relay)
t = internet.TimerService(EXPIRATION_CHECK_PERIOD,
self.relay.prune_old_channels)
t.setServiceParent(self)
if transitport: if transitport:
self.transit = Transit() self.transit = Transit()
self.transit.setServiceParent(self) # for the timer self.transit.setServiceParent(self) # for the timer