Skip to content

Commit

Permalink
Added sessionmanager
Browse files Browse the repository at this point in the history
  • Loading branch information
greghaynes committed Aug 3, 2010
1 parent 857c006 commit 68322c0
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/pyscripts/xsbs/http/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
from xsbs.settings import PluginConfig
from xsbs.events import eventHandler

from sessionmanager import SessionManager

config = PluginConfig('httpserver')
port = config.getOption('Config', 'port', '8081')
enable = config.getOption('Config', 'enable', 'yes') == 'yes'
Expand All @@ -19,6 +21,7 @@ def __init__(self, address, port):
self.port = port
self.root_site = RootSite()
self.server_site = server.Site(self.root_site)
self.sessionManager = SessionManager()
def start(self):
self.connection = reactor.listenTCP(port, self.server_site)
def stop(self):
Expand Down
9 changes: 9 additions & 0 deletions src/pyscripts/xsbs/http/jsonapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,15 @@ def __call__(self, *args, **kwargs):
class JsonSite(resource.Resource):
def render_GET(self, request):
setJsonHeaders(request)
try:
sesskey = request.args['sessionkey'][0]
except KeyError:
pass
else:
try:
request.session = httpServer.sessionManager.sessions[sesskey]
except KeyError:
pass
return self.render_JSON(request)
def render_OPTIONS(self, request):
setJsonHeaders(request)
Expand Down
20 changes: 20 additions & 0 deletions src/pyscripts/xsbs/http/sessionmanager.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import time

class Session(dict):
def __init__(self, key):
self.key = key
self.create_time = time.time()
self.touch_time = self.create_time
def touch(self):
self.touch_time = time.time()

class SessionManager(object):
def __init__(self, stale_secs=3600):
self.sessions = {}
self.stale_secs = stale_secs
def removeStales(self):
cur_time = time.time()
for session in self.sessions.values():
if (session.touch_time + self.stale_secs) < cur_time:
del self.sessions[session.key]

0 comments on commit 68322c0

Please sign in to comment.