Annotation of embedaddon/sqlite3/src/test_multiplex.h, revision 1.1

1.1     ! misho       1: /*
        !             2: ** 2011 March 18
        !             3: **
        !             4: ** The author disclaims copyright to this source code.  In place of
        !             5: ** a legal notice, here is a blessing:
        !             6: **
        !             7: **    May you do good and not evil.
        !             8: **    May you find forgiveness for yourself and forgive others.
        !             9: **    May you share freely, never taking more than you give.
        !            10: **
        !            11: *************************************************************************
        !            12: **
        !            13: ** This file contains a VFS "shim" - a layer that sits in between the
        !            14: ** pager and the real VFS.
        !            15: **
        !            16: ** This particular shim enforces a multiplex system on DB files.  
        !            17: ** This shim shards/partitions a single DB file into smaller 
        !            18: ** "chunks" such that the total DB file size may exceed the maximum
        !            19: ** file size of the underlying file system.
        !            20: **
        !            21: */
        !            22: 
        !            23: #ifndef _TEST_MULTIPLEX_H
        !            24: #define _TEST_MULTIPLEX_H
        !            25: 
        !            26: /*
        !            27: ** CAPI: File-control Operations Supported by Multiplex VFS
        !            28: **
        !            29: ** Values interpreted by the xFileControl method of a Multiplex VFS db file-handle.
        !            30: **
        !            31: ** MULTIPLEX_CTRL_ENABLE:
        !            32: **   This file control is used to enable or disable the multiplex
        !            33: **   shim.
        !            34: **
        !            35: ** MULTIPLEX_CTRL_SET_CHUNK_SIZE:
        !            36: **   This file control is used to set the maximum allowed chunk 
        !            37: **   size for a multiplex file set.  The chunk size should be 
        !            38: **   a multiple of SQLITE_MAX_PAGE_SIZE, and will be rounded up
        !            39: **   if not.
        !            40: **
        !            41: ** MULTIPLEX_CTRL_SET_MAX_CHUNKS:
        !            42: **   This file control is used to set the maximum number of chunks
        !            43: **   allowed to be used for a mutliplex file set.
        !            44: */
        !            45: #define MULTIPLEX_CTRL_ENABLE          214014
        !            46: #define MULTIPLEX_CTRL_SET_CHUNK_SIZE  214015
        !            47: #define MULTIPLEX_CTRL_SET_MAX_CHUNKS  214016
        !            48: 
        !            49: /*
        !            50: ** CAPI: Initialize the multiplex VFS shim - sqlite3_multiplex_initialize()
        !            51: **
        !            52: ** Use the VFS named zOrigVfsName as the VFS that does the actual work.  
        !            53: ** Use the default if zOrigVfsName==NULL.  
        !            54: **
        !            55: ** The multiplex VFS shim is named "multiplex".  It will become the default
        !            56: ** VFS if makeDefault is non-zero.
        !            57: **
        !            58: ** An auto-extension is registered which will make the function 
        !            59: ** multiplex_control() available to database connections.  This
        !            60: ** function gives access to the xFileControl interface of the 
        !            61: ** multiplex VFS shim.
        !            62: **
        !            63: ** SELECT multiplex_control(<op>,<val>);
        !            64: ** 
        !            65: **   <op>=1 MULTIPLEX_CTRL_ENABLE
        !            66: **   <val>=0 disable
        !            67: **   <val>=1 enable
        !            68: ** 
        !            69: **   <op>=2 MULTIPLEX_CTRL_SET_CHUNK_SIZE
        !            70: **   <val> int, chunk size
        !            71: ** 
        !            72: **   <op>=3 MULTIPLEX_CTRL_SET_MAX_CHUNKS
        !            73: **   <val> int, max chunks
        !            74: **
        !            75: ** THIS ROUTINE IS NOT THREADSAFE.  Call this routine exactly once
        !            76: ** during start-up.
        !            77: */
        !            78: extern int sqlite3_multiplex_initialize(const char *zOrigVfsName, int makeDefault);
        !            79: 
        !            80: /*
        !            81: ** CAPI: Shutdown the multiplex system - sqlite3_multiplex_shutdown()
        !            82: **
        !            83: ** All SQLite database connections must be closed before calling this
        !            84: ** routine.
        !            85: **
        !            86: ** THIS ROUTINE IS NOT THREADSAFE.  Call this routine exactly once while
        !            87: ** shutting down in order to free all remaining multiplex groups.
        !            88: */
        !            89: extern int sqlite3_multiplex_shutdown(void);
        !            90: 
        !            91: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>