summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.syscall
diff options
context:
space:
mode:
authorWilliam Cohen <wcohen@redhat.com>2009-01-30 16:56:08 -0500
committerWilliam Cohen <wcohen@redhat.com>2009-01-30 16:56:08 -0500
commit255b5e73f14c9fc72e5566edf595ab8df184f14f (patch)
tree3d8afec8084ce9af6879a5660364dad1198b43b7 /testsuite/systemtap.syscall
parent184b9da7621b2fe0c588801fc0a4e94f6557bdeb (diff)
downloadsystemtap-steved-255b5e73f14c9fc72e5566edf595ab8df184f14f.tar.gz
systemtap-steved-255b5e73f14c9fc72e5566edf595ab8df184f14f.tar.xz
systemtap-steved-255b5e73f14c9fc72e5566edf595ab8df184f14f.zip
Correct ChangeLog date type.
Diffstat (limited to 'testsuite/systemtap.syscall')
0 files changed, 0 insertions, 0 deletions
ibutors, for licensee see COPYING import base64 from cherrypy.lib.sessions import Session from ipsilon.util.data import SqlStore, SqlQuery import threading try: import cPickle as pickle except ImportError: import pickle SESSION_COLUMNS = ['id', 'data', 'expiration_time'] class SqlSession(Session): dburi = None _db = None _proto = 2 locks = {} @classmethod def setup(cls, **kwargs): """Initialization from cherrypy""" for k, v in kwargs.items(): if k == 'storage_dburi': cls.dburi = v cls._db = SqlStore(cls.dburi) def _exists(self): q = SqlQuery(self._db, 'sessions', SESSION_COLUMNS) result = q.select({'id': self.id}) return True if result.fetchone() else False def _load(self): q = SqlQuery(self._db, 'sessions', SESSION_COLUMNS) result = q.select({'id': self.id}) r = result.fetchone() if r: data = str(base64.b64decode(r[1])) return pickle.loads(data) def _save(self, expiration_time): q = None try: q = SqlQuery(self._db, 'sessions', SESSION_COLUMNS, trans=True) q.delete({'id': self.id}) data = pickle.dumps((self._data, expiration_time), self._proto) q.insert((self.id, base64.b64encode(data), expiration_time)) q.commit() except Exception: # pylint: disable=broad-except if q: q.rollback() raise def _delete(self): q = SqlQuery(self._db, 'sessions', SESSION_COLUMNS) q.delete({'id': self.id}) # copy what RamSession does for now def acquire_lock(self): """Acquire an exclusive lock on the currently-loaded session data.""" self.locked = True self.locks.setdefault(self.id, threading.RLock()).acquire() def release_lock(self): """Release the lock on the currently-loaded session data.""" self.locks[self.id].release() self.locked = False