LockServer
(Available in 01 TS COM - TS_COM_IClassFactory)
Source
METHOD LockServer( lLock AS LOGIC ) AS LONG PASCAL CLASS TS_IClassFactory
LOCAL oServerInfoGuard AS TS_ServerInfoGuard
LOCAL oCOMGlobalData AS _TS_COMGlobalData
LOCAL oServerInfo AS TS_ServerInfo
LOCAL hResult AS LONG
TSTrace Enter
oCOMGlobalData:=_TS_ModuleGetCOMGlobalData( )
#IFDEF TS_COMGLOBALDATA_CRITICALSECTION
EnterCriticalSection( oCOMGlobalData:_COMGGeneralPurposeSection )
#ENDIF
oServerInfoGuard:=TS_ServerInfoGuard{ }
oServerInfo:=oServerInfoGuard:Get( )
DO CASE
CASE !SELF:IsValidObject
TSTrace Warning "!SELF:IsValidObject"
hResult:=E_FAIL
CASE lLock
oServerInfo:LockedServersIncrement( )
hResult:=S_OK
OTHERWISE
oServerInfo:LockedServersDecrement( )
hResult:=S_OK
END
oServerInfo:=oServerInfoGuard:FREEREF( )
oServerInfoGuard:=NULL_OBJECT
#IFDEF TS_COMGLOBALDATA_CRITICALSECTION
LeaveCriticalSection( oCOMGlobalData:_COMGGeneralPurposeSection )
#ENDIF
TSTrace Leave
RETURN hResult