from SessionStore import SessionStore
from SessionFileStore import SessionFileStore
class SessionMemoryStore(SessionStore):
"""Stores the session in memory as a dictionary.
This is fast and secure when you have one, persistent app server.
"""
## Init ##
def __init__(self, app, restoreFiles=1):
SessionStore.__init__(self, app)
self._store = {}
if restoreFiles == 1:
filestore = SessionFileStore(app)
keys = filestore.keys()
for i in keys:
try:
self[i] = filestore[i]
except Exception:
app.handleException()
filestore.clear()
## Access ##
def __len__(self):
return len(self._store)
def __getitem__(self, key):
return self._store[key]
def __setitem__(self, key, item):
self._store[key] = item
def __delitem__(self, key):
sess = self[key]
if not sess.isExpired():
sess.expiring()
del self._store[key]
def has_key(self, key):
return self._store.has_key(key)
def keys(self):
return self._store.keys()
def clear(self):
self._store.clear()
def setdefault(self, key, default):
# Note, setdefault is atomic so no locking is needed.
return self._store.setdefault(key, default)
## Application support ##
def storeSession(self, session):
pass
def storeAllSessions(self):
filestore = SessionFileStore(self._app)
for i in self.keys():
filestore[i] = self[i]
|