//Lock/unlock tests void Test5() { sqlite3_vfs* vfs = sqlite3_vfs_find(KSymbianVfsNameZ); TEST(vfs != NULL); sqlite3_file* osFile = (sqlite3_file*)User::Alloc(vfs->szOsFile); TEST(osFile != NULL); //Creating a new file int res = 0; int err = sqlite3OsAccess(vfs, KTestFile1Z, SQLITE_ACCESS_EXISTS, &res); TEST2(err, SQLITE_OK); TEST2(res, 0); err = sqlite3OsOpen(vfs, KTestFile1Z, osFile, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, 0); TEST2(err, SQLITE_OK); //Lock/unlock //SHARED_LOCK err = sqlite3OsLock(osFile, SHARED_LOCK); TEST2(err, SQLITE_OK); err = sqlite3OsCheckReservedLock(osFile, &res); TEST2(err, SQLITE_OK); TEST2(res, 0); //RESERVED_LOCK err = sqlite3OsLock(osFile, RESERVED_LOCK); TEST2(err, SQLITE_OK); err = sqlite3OsCheckReservedLock(osFile, &res); TEST2(err, SQLITE_OK); TEST2(res, 1); //PENDING_LOCK err = sqlite3OsLock(osFile, PENDING_LOCK); TEST2(err, SQLITE_OK); //EXCLUSIVE_LOCK err = sqlite3OsLock(osFile, EXCLUSIVE_LOCK); TEST2(err, SQLITE_OK); //back to SHARED_LOCK err = sqlite3OsLock(osFile, SHARED_LOCK); TEST2(err, SQLITE_OK); //UNLOCK err = sqlite3OsUnlock(osFile, NO_LOCK); //Close the file err = sqlite3OsClose(osFile); TEST2(err, SQLITE_OK); // err = sqlite3OsDelete(vfs, KTestFile1Z, 0); TEST2(err, SQLITE_OK); User::Free(osFile); }
/* ** Lock an jt-file. */ static int jtLock(sqlite3_file *pFile, int eLock){ int rc; jt_file *p = (jt_file *)pFile; rc = sqlite3OsLock(p->pReal, eLock); if( rc==SQLITE_OK && eLock>p->eLock ){ p->eLock = eLock; } return rc; }
/* ** Lock an tvfs-file. */ static int tvfsLock(sqlite3_file *pFile, int eLock){ TestvfsFd *pFd = tvfsGetFd(pFile); Testvfs *p = (Testvfs *)pFd->pVfs->pAppData; if( p->pScript && p->mask&TESTVFS_LOCK_MASK ){ char zLock[30]; sqlite3_snprintf(sizeof(zLock),zLock,"%d",eLock); tvfsExecTcl(p, "xLock", Tcl_NewStringObj(pFd->zFilename, -1), Tcl_NewStringObj(zLock, -1), 0, 0); } return sqlite3OsLock(pFd->pReal, eLock); }
/* ** Calls related to file-locks are passed on to the real file handle. */ static int cfLock(sqlite3_file *pFile, int eLock){ return sqlite3OsLock(((CrashFile *)pFile)->pRealFile, eLock); }
/* ** Lock an devsym-file. */ static int devsymLock(sqlite3_file *pFile, int eLock){ devsym_file *p = (devsym_file *)pFile; return sqlite3OsLock(p->pReal, eLock); }
/* ** Lock an tvfs-file. */ static int tvfsLock(sqlite3_file *pFile, int eLock){ TestvfsFd *p = tvfsGetFd(pFile); return sqlite3OsLock(p->pReal, eLock); }