SBcache.h
上传用户:xqtpzdz
上传日期:2022-05-21
资源大小:1764k
文件大小:6k
源码类别:

xml/soap/webservice

开发平台:

Visual C++

  1. /****************License************************************************
  2.  * Vocalocity OpenVXI
  3.  * Copyright (C) 2004-2005 by Vocalocity, Inc. All Rights Reserved.
  4.  * This program is free software; you can redistribute it and/or
  5.  * modify it under the terms of the GNU General Public License
  6.  * as published by the Free Software Foundation; either version 2
  7.  * of the License, or (at your option) any later version.
  8.  *  
  9.  * This program is distributed in the hope that it will be useful,
  10.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  * GNU General Public License for more details.
  13.  *
  14.  * You should have received a copy of the GNU General Public License
  15.  * along with this program; if not, write to the Free Software
  16.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  17.  * Vocalocity, the Vocalocity logo, and VocalOS are trademarks or 
  18.  * registered trademarks of Vocalocity, Inc. 
  19.  * OpenVXI is a trademark of Scansoft, Inc. and used under license 
  20.  * by Vocalocity.
  21.  ***********************************************************************/
  22. #ifndef _SBCACHE_H
  23. #define _SBCACHE_H
  24. #include "VXIcache.h"                  /* For VXIcache base interface */
  25. #include "VXIlog.h"                    /* For VXIlog interface */
  26. #include "VXIheaderPrefix.h"
  27. #ifdef SBCACHE_EXPORTS
  28. #define SBCACHE_API SYMBOL_EXPORT_DECL
  29. #else
  30. #define SBCACHE_API SYMBOL_IMPORT_DECL
  31. #endif
  32. #ifdef __cplusplus
  33. extern "C" {
  34. #endif
  35. /**
  36.  * defgroup SBcache VXIcacheInterface Implementation
  37.  *
  38.  * SBcache interface, and implementation of VXIcacheInterface
  39.  * which permits writing arbitrary data into the cache with
  40.  * a client supplied key name, then retrieving that data from the
  41.  * cache one or more times by reading against that key name. <p>
  42.  *
  43.  * Normally the cache implementation can choose to discard the data
  44.  * between the write and the read when necessary (due to running out
  45.  * of cache space, etc.), but it is also possible for clients to lock
  46.  * data in the cache to support built-in grammars and other data that
  47.  * is explicitly provisioned by system administrators and thus must
  48.  * not be removed unless by explicit system administrator command. <p>
  49.  *
  50.  * See VXIcache.h for additional details.<p>
  51.  *
  52.  * This implementation currently does NOT factor in
  53.  * CACHE_CREATION_COST when determining how to clean up the cache, and
  54.  * all caching is done on disk resulting in CACHE_FLAG_LOCK_MEMORY
  55.  * being treated as CACHE_FLAG_LOCK. In addition,
  56.  * CACHE_FLAG_NONBLOCKING_IO is ignored, disk I/O is done in a
  57.  * blocking manner (usually undetectable by clients since local disks
  58.  * are used). Long key names are handled using MD5 digests as described
  59.  * as a potential implementation choice in VXIcache.h.<p>
  60.  *
  61.  * There is one cache interface per thread/line.
  62.  */
  63. /*@{*/
  64. /**
  65.  * Global platform initialization of SBcache
  66.  *
  67.  * @param log              VXI Logging interface used for error/diagnostic 
  68.  *                         logging, only used for the duration of this 
  69.  *                         function call
  70.  * @param cacheDir         Cache directory name
  71.  * @param cacheSizeMB      Maximum size of the data in the cache directory,
  72.  *                         in megabytes
  73.  * @param entryMaxSizeMB   Maximum size of any individual cache entry, in
  74.  *                         megabytes
  75.  * @param entryExpTimeSec  Maximum amount of time any individual cache entry
  76.  *                         will remain in the cache, in seconds
  77.  * @param unlockEntries    TRUE to unlock locked entries on startup (from
  78.  *                         using CACHE_FLAG_LOCK and CACHE_FLAG_LOCK_MEMORY),
  79.  *                         FALSE to leave them locked. In most cases it is
  80.  *                         best to pass TRUE with the platform re-adding
  81.  *                         locked entries at startup in order to avoid
  82.  *                         having obsolete locked entries fill up the cache.
  83.  *                         However, for some multi-process oriented
  84.  *                         integrations it may be necessary to pass FALSE
  85.  *                         and do this cleanup in some other way.
  86.  *
  87.  * @result VXIcache_RESULT_SUCCESS on success
  88.  */
  89. SBCACHE_API VXIcacheResult SBcacheInit(VXIlogInterface  *log,
  90.                                        const VXIunsigned diagLogBase,
  91.                                        const VXIchar    *cacheDir,
  92.                                        const int         cacheSizeMB,
  93.                                        const int         entryMaxSizeMB,
  94.                                        const int         entryExpTimeSec,
  95.                                        VXIbool           unlockEntries,
  96.                                        const int         cacheLowWaterMB);
  97. /**
  98.  * Global platform shutdown of SBcache
  99.  *
  100.  * @param log    VXI Logging interface used for error/diagnostic logging,
  101.  *               only used for the duration of this function call
  102.  *
  103.  * @result VXIcache_RESULT_SUCCESS on success
  104.  */
  105. SBCACHE_API VXIcacheResult SBcacheShutDown (VXIlogInterface  *log);
  106. /**
  107.  * Create a new cache service handle
  108.  *
  109.  * @param log        [IN] VXI Logging interface used for error/diagnostic 
  110.  *                   logging, must remain a valid pointer throughout the 
  111.  *                   lifetime of the resource (until 
  112.  *                   SBcacheDestroyResource() is called)
  113.  * @param cache      [IN/OUT] Will hold the created cache resource.
  114.  *
  115.  * @result VXIcache_RESULT_SUCCESS on success 
  116.  */
  117. SBCACHE_API 
  118. VXIcacheResult SBcacheCreateResource (VXIlogInterface     *log,
  119.                                       VXIcacheInterface   **cache);
  120.   
  121. /**
  122.  * Destroy the interface and free internal resources. Once this is
  123.  * called, the logging interface passed to SBcacheCreateResource( ) 
  124.  * may be released as well.
  125.  *
  126.  * @param cache [IN/OUT] The cache resource created by SBcacheCreateResource()
  127.  *
  128.  * @result VXIcache_RESULT_SUCCESS on success 
  129.  */
  130. SBCACHE_API 
  131. VXIcacheResult SBcacheDestroyResource (VXIcacheInterface **cache);
  132. /*@}*/
  133. #ifdef __cplusplus
  134. }
  135. #endif
  136. #include "VXIheaderSuffix.h"
  137. #endif  /* include guard */