Lines Matching refs:pGroup

139   multiplexGroup *pGroup;         /* The underlying group of files */  member
256 static int multiplexSubFilename(multiplexGroup *pGroup, int iChunk){ in multiplexSubFilename() argument
257 if( iChunk>=pGroup->nReal ){ in multiplexSubFilename()
259 p = sqlite3_realloc64(pGroup->aReal, (iChunk+1)*sizeof(*p)); in multiplexSubFilename()
263 memset(&p[pGroup->nReal], 0, sizeof(p[0])*(iChunk+1-pGroup->nReal)); in multiplexSubFilename()
264 pGroup->aReal = p; in multiplexSubFilename()
265 pGroup->nReal = iChunk+1; in multiplexSubFilename()
267 if( pGroup->zName && pGroup->aReal[iChunk].z==0 ){ in multiplexSubFilename()
269 int n = pGroup->nName; in multiplexSubFilename()
274 multiplexFilename(pGroup->zName, pGroup->nName, pGroup->flags, iChunk, z); in multiplexSubFilename()
275 pGroup->aReal[iChunk].z = (char*)sqlite3_create_filename(z,"","",0,0); in multiplexSubFilename()
277 if( pGroup->aReal[iChunk].z==0 ) return SQLITE_NOMEM; in multiplexSubFilename()
290 multiplexGroup *pGroup, /* The multiplexor group */ in multiplexSubOpen() argument
305 sqlite3_log(SQLITE_FULL, "multiplexed chunk overflow: %s", pGroup->zName); in multiplexSubOpen()
311 *rc = multiplexSubFilename(pGroup, iChunk); in multiplexSubOpen()
312 if( (*rc)==SQLITE_OK && (pSubOpen = pGroup->aReal[iChunk].p)==0 ){ in multiplexSubOpen()
314 flags = pGroup->flags; in multiplexSubOpen()
319 }else if( pGroup->aReal[iChunk].z==0 ){ in multiplexSubOpen()
322 *rc = pOrigVfs->xAccess(pOrigVfs, pGroup->aReal[iChunk].z, in multiplexSubOpen()
327 pGroup->aReal[iChunk].z); in multiplexSubOpen()
338 pGroup->aReal[iChunk].p = pSubOpen; in multiplexSubOpen()
339 *rc = pOrigVfs->xOpen(pOrigVfs, pGroup->aReal[iChunk].z, pSubOpen, in multiplexSubOpen()
343 pGroup->aReal[iChunk].z); in multiplexSubOpen()
345 pGroup->aReal[iChunk].p = 0; in multiplexSubOpen()
358 multiplexGroup *pGroup, /* The multiplexor group */ in multiplexSubSize() argument
366 pSub = multiplexSubOpen(pGroup, iChunk, rc, NULL, 0); in multiplexSubSize()
432 multiplexGroup *pGroup, in multiplexSubClose() argument
436 sqlite3_file *pSubOpen = pGroup->aReal[iChunk].p; in multiplexSubClose()
439 if( pOrigVfs && pGroup->aReal[iChunk].z ){ in multiplexSubClose()
440 pOrigVfs->xDelete(pOrigVfs, pGroup->aReal[iChunk].z, 0); in multiplexSubClose()
442 sqlite3_free(pGroup->aReal[iChunk].p); in multiplexSubClose()
444 sqlite3_free_filename(pGroup->aReal[iChunk].z); in multiplexSubClose()
445 memset(&pGroup->aReal[iChunk], 0, sizeof(pGroup->aReal[iChunk])); in multiplexSubClose()
451 static void multiplexFreeComponents(multiplexGroup *pGroup){ in multiplexFreeComponents() argument
453 for(i=0; i<pGroup->nReal; i++){ multiplexSubClose(pGroup, i, 0); } in multiplexFreeComponents()
454 sqlite3_free(pGroup->aReal); in multiplexFreeComponents()
455 pGroup->aReal = 0; in multiplexFreeComponents()
456 pGroup->nReal = 0; in multiplexFreeComponents()
478 multiplexGroup *pGroup = 0; /* Corresponding multiplexGroup object */ in multiplexOpen() local
499 pGroup = sqlite3_malloc64( sz ); in multiplexOpen()
500 if( pGroup==0 ){ in multiplexOpen()
508 memset(pGroup, 0, sz); in multiplexOpen()
509 pMultiplexOpen->pGroup = pGroup; in multiplexOpen()
510 pGroup->bEnabled = (unsigned char)-1; in multiplexOpen()
511 pGroup->bTruncate = (unsigned char)sqlite3_uri_boolean(zUri, "truncate", in multiplexOpen()
513 pGroup->szChunk = (int)sqlite3_uri_int64(zUri, "chunksize", in multiplexOpen()
515 pGroup->szChunk = (pGroup->szChunk+0xffff)&~0xffff; in multiplexOpen()
517 char *p = (char *)&pGroup[1]; in multiplexOpen()
518 pGroup->zName = p; in multiplexOpen()
519 memcpy(pGroup->zName, zName, nName+1); in multiplexOpen()
520 pGroup->nName = nName; in multiplexOpen()
522 if( pGroup->bEnabled ){ in multiplexOpen()
532 while( (sqlite3PendingByte % pGroup->szChunk)>=(pGroup->szChunk-65536) ){ in multiplexOpen()
533 pGroup->szChunk += 65536; in multiplexOpen()
536 pGroup->flags = (flags & ~SQLITE_OPEN_URI); in multiplexOpen()
537 rc = multiplexSubFilename(pGroup, 1); in multiplexOpen()
539 pSubOpen = multiplexSubOpen(pGroup, 0, &rc, pOutFlags, 0); in multiplexOpen()
549 pGroup->bEnabled = 0; in multiplexOpen()
559 pGroup->aReal[iChunk].z, SQLITE_ACCESS_EXISTS, &bExists in multiplexOpen()
562 rc = pOrigVfs->xDelete(pOrigVfs, pGroup->aReal[iChunk].z, 0); in multiplexOpen()
564 rc = multiplexSubFilename(pGroup, ++iChunk); in multiplexOpen()
579 rc = pOrigVfs->xAccess(pOrigVfs, pGroup->aReal[1].z, in multiplexOpen()
581 bExists = multiplexSubSize(pGroup, 1, &rc)>0; in multiplexOpen()
583 && sz64!=pGroup->szChunk ){ in multiplexOpen()
584 pGroup->szChunk = (int)sz64; in multiplexOpen()
585 }else if( rc==SQLITE_OK && !bExists && sz64>pGroup->szChunk ){ in multiplexOpen()
586 pGroup->bEnabled = 0; in multiplexOpen()
599 multiplexFreeComponents(pGroup); in multiplexOpen()
600 sqlite3_free(pGroup); in multiplexOpen()
703 multiplexGroup *pGroup = p->pGroup; in multiplexClose() local
705 multiplexFreeComponents(pGroup); in multiplexClose()
706 sqlite3_free(pGroup); in multiplexClose()
721 multiplexGroup *pGroup = p->pGroup; in multiplexRead() local
723 if( !pGroup->bEnabled ){ in multiplexRead()
724 sqlite3_file *pSubOpen = multiplexSubOpen(pGroup, 0, &rc, NULL, 0); in multiplexRead()
732 int i = (int)(iOfst / pGroup->szChunk); in multiplexRead()
734 pSubOpen = multiplexSubOpen(pGroup, i, &rc, NULL, 1); in multiplexRead()
736 int extra = ((int)(iOfst % pGroup->szChunk) + iAmt) - pGroup->szChunk; in multiplexRead()
740 iOfst % pGroup->szChunk); in multiplexRead()
766 multiplexGroup *pGroup = p->pGroup; in multiplexWrite() local
768 if( !pGroup->bEnabled ){ in multiplexWrite()
769 sqlite3_file *pSubOpen = multiplexSubOpen(pGroup, 0, &rc, NULL, 0); in multiplexWrite()
777 int i = (int)(iOfst / pGroup->szChunk); in multiplexWrite()
778 sqlite3_file *pSubOpen = multiplexSubOpen(pGroup, i, &rc, NULL, 1); in multiplexWrite()
780 int extra = ((int)(iOfst % pGroup->szChunk) + iAmt) - in multiplexWrite()
781 pGroup->szChunk; in multiplexWrite()
785 iOfst % pGroup->szChunk); in multiplexWrite()
801 multiplexGroup *pGroup = p->pGroup; in multiplexTruncate() local
803 if( !pGroup->bEnabled ){ in multiplexTruncate()
804 sqlite3_file *pSubOpen = multiplexSubOpen(pGroup, 0, &rc, NULL, 0); in multiplexTruncate()
812 int iBaseGroup = (int)(size / pGroup->szChunk); in multiplexTruncate()
816 for(i = pGroup->nReal-1; i>iBaseGroup && rc==SQLITE_OK; i--){ in multiplexTruncate()
817 if( pGroup->bTruncate ){ in multiplexTruncate()
818 multiplexSubClose(pGroup, i, pOrigVfs); in multiplexTruncate()
820 pSubOpen = multiplexSubOpen(pGroup, i, &rc, 0, 0); in multiplexTruncate()
827 pSubOpen = multiplexSubOpen(pGroup, iBaseGroup, &rc, 0, 0); in multiplexTruncate()
829 rc = pSubOpen->pMethods->xTruncate(pSubOpen, size % pGroup->szChunk); in multiplexTruncate()
841 multiplexGroup *pGroup = p->pGroup; in multiplexSync() local
844 for(i=0; i<pGroup->nReal; i++){ in multiplexSync()
845 sqlite3_file *pSubOpen = pGroup->aReal[i].p; in multiplexSync()
859 multiplexGroup *pGroup = p->pGroup; in multiplexFileSize() local
862 if( !pGroup->bEnabled ){ in multiplexFileSize()
863 sqlite3_file *pSubOpen = multiplexSubOpen(pGroup, 0, &rc, NULL, 0); in multiplexFileSize()
872 sqlite3_int64 sz = multiplexSubSize(pGroup, i, &rc); in multiplexFileSize()
874 *pSize = i*(sqlite3_int64)pGroup->szChunk + sz; in multiplexFileSize()
885 sqlite3_file *pSubOpen = multiplexSubOpen(p->pGroup, 0, &rc, NULL, 0); in multiplexLock()
897 sqlite3_file *pSubOpen = multiplexSubOpen(p->pGroup, 0, &rc, NULL, 0); in multiplexUnlock()
909 sqlite3_file *pSubOpen = multiplexSubOpen(p->pGroup, 0, &rc, NULL, 0); in multiplexCheckReservedLock()
921 multiplexGroup *pGroup = p->pGroup; in multiplexFileControl() local
930 pGroup->bEnabled = (unsigned char)bEnabled; in multiplexFileControl()
943 pGroup->szChunk = szChunk; in multiplexFileControl()
980 pGroup->bTruncate = 1; in multiplexFileControl()
984 pGroup->bTruncate = 0; in multiplexFileControl()
993 aFcntl[0] = sqlite3_mprintf(pGroup->bTruncate ? "on" : "off"); in multiplexFileControl()
1004 aFcntl[0] = sqlite3_mprintf("%d", pGroup->bEnabled!=0); in multiplexFileControl()
1015 && pGroup->bEnabled in multiplexFileControl()
1017 aFcntl[0] = sqlite3_mprintf("%u", pGroup->szChunk); in multiplexFileControl()
1031 for(ii=0; ii<pGroup->nReal; ii++){ in multiplexFileControl()
1032 if( pGroup->aReal[ii].p!=0 ) n++; in multiplexFileControl()
1043 pSubOpen = multiplexSubOpen(pGroup, 0, &rc, NULL, 0); in multiplexFileControl()
1060 sqlite3_file *pSubOpen = multiplexSubOpen(p->pGroup, 0, &rc, NULL, 0); in multiplexSectorSize()
1072 sqlite3_file *pSubOpen = multiplexSubOpen(p->pGroup, 0, &rc, NULL, 0); in multiplexDeviceCharacteristics()
1090 sqlite3_file *pSubOpen = multiplexSubOpen(p->pGroup, 0, &rc, NULL, 0); in multiplexShmMap()
1107 sqlite3_file *pSubOpen = multiplexSubOpen(p->pGroup, 0, &rc, NULL, 0); in multiplexShmLock()
1119 sqlite3_file *pSubOpen = multiplexSubOpen(p->pGroup, 0, &rc, NULL, 0); in multiplexShmBarrier()
1130 sqlite3_file *pSubOpen = multiplexSubOpen(p->pGroup, 0, &rc, NULL, 0); in multiplexShmUnmap()