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