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]