def __init__(self, name, base=None): self.__name__=name # Allocate locks: l=ThreadLock.allocate_lock() self._lock_acquire=l.acquire self._lock_release=l.release l=bpthread.allocate_lock() self._commit_lock_acquire=l.acquire self._commit_lock_release=l.release t=time.time() t=self._ts=apply(TimeStamp,(time.gmtime(t)[:5]+(t%60,))) self._serial=`t` if base is None: self._oid='\0\0\0\0\0\0\0\0' else: self._oid=base._oid
# FOR A PARTICULAR PURPOSE # ############################################################################## database_type='Gadfly' __doc__='''%s Database Connection $Id: DA.py,v 1.15 2002/08/14 22:25:17 mj Exp $''' % database_type __version__='$Revision: 1.15 $'[11:-2] from db import DB, manage_DataSources import sys, DABase, Globals import Shared.DC.ZRDB.Connection, ThreadLock _Connection=Shared.DC.ZRDB.Connection.Connection _connections={} _connections_lock=ThreadLock.allocate_lock() data_sources=manage_DataSources addConnectionForm=Globals.HTMLFile('dtml/connectionAdd',globals()) def manage_addZGadflyConnection( self, id, title, connection, check=None, REQUEST=None): """Add a DB connection to a folder""" # Note - type checking is taken care of by _setObject # and the Connection object constructor. self._setObject(id, Connection( id, title, connection, check)) if REQUEST is not None: return self.manage_main(self,REQUEST) class Connection(DABase.Connection):
# Copyright (c) 2002 Zope Corporation and Contributors. All Rights Reserved. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE # ############################################################################## import TM, ThreadLock from TM import Surrogate import transaction thunk_lock = ThreadLock.allocate_lock() class THUNKED_TM(TM.TM): """A big heavy hammer for handling non-thread safe DAs """ def _register(self): if not self._registered: thunk_lock.acquire() try: transaction.get().register(Surrogate(self)) self._begin() except: thunk_lock.release() raise else:
############################################################################## database_type = 'Gadfly' __doc__ = '''%s Database Connection $Id$''' % database_type __version__ = '$Revision: 1.16 $'[11:-2] from db import DB, manage_DataSources import sys, DABase, Globals import Shared.DC.ZRDB.Connection, ThreadLock from zExceptions import BadRequest _Connection = Shared.DC.ZRDB.Connection.Connection _connections = {} _connections_lock = ThreadLock.allocate_lock() data_sources = manage_DataSources addConnectionForm = Globals.HTMLFile('dtml/connectionAdd', globals()) def manage_addZGadflyConnection(self, id, title, connection, check=None, REQUEST=None): """Add a DB connection to a folder""" # Note - type checking is taken care of by _setObject
# Copyright (c) 2002 Zope Corporation and Contributors. All Rights Reserved. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE # ############################################################################## import TM, ThreadLock from TM import Surrogate import transaction thunk_lock=ThreadLock.allocate_lock() class THUNKED_TM(TM.TM): """A big heavy hammer for handling non-thread safe DAs """ def _register(self): if not self._registered: thunk_lock.acquire() try: transaction.get().register(Surrogate(self)) self._begin() except: thunk_lock.release() raise else:
def __init__(self,*args,**kw): self.count=0 if with_lock: self.lock=lock=ThreadLock.allocate_lock() self.__call_method__=lock.guarded_apply