int GlobalRWLock::blocking_ast_cached_lock(void* ast_object) { GlobalRWLock* globalRWLock = static_cast<GlobalRWLock*>(ast_object); try { if (!globalRWLock->cachedLock) return 0; Database* const dbb = globalRWLock->cachedLock->lck_dbb; AsyncContextHolder tdbb(dbb, FB_FUNCTION); MutexLockGuard counterGuard(globalRWLock->counterMutex, FB_FUNCTION); globalRWLock->blockingAstHandler(tdbb); } catch (const Exception&) {} // no-op return 0; }
int GlobalRWLock::blocking_ast_cached_lock(void* ast_object) { GlobalRWLock* globalRWLock = static_cast<GlobalRWLock*>(ast_object); try { Firebird::MutexLockGuard counterGuard(globalRWLock->counterMutex); if (!globalRWLock->cachedLock) return 0; Database* dbb = globalRWLock->cachedLock->lck_dbb; AstContextHolder tdbb(dbb); if (globalRWLock->cachedLock) globalRWLock->blockingAstHandler(tdbb); } catch (const Firebird::Exception&) {} // no-op return 0; }