Annotation of embedaddon/sqlite3/src/test_multiplex.h, revision 1.1.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>