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

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 _SBLOGLISTENERS_H              /* Allows multiple inclusions */
  23. #define _SBLOGLISTENERS_H
  24. #include "VXIheaderPrefix.h"
  25. #ifdef SBLOGLISTENERS_DLL
  26. #ifdef SBLOGLISTENERS_EXPORTS
  27. #define SBLOGLISTENERS_API SYMBOL_EXPORT_DECL
  28. #else
  29. #define SBLOGLISTENERS_API SYMBOL_IMPORT_DECL
  30. #endif
  31. #else
  32. #ifdef __cplusplus
  33. #define SBLOGLISTENERS_API extern "C"
  34. #else
  35. #define SBLOGLISTENERS_API extern
  36. #endif
  37. #endif
  38. #include "SBlog.h"
  39. /**
  40.  * @name SBlogListeners
  41.  * @memo Reference implementation of SBlog listeners
  42.  * @doc These functions are used to register and unregister for log
  43.  * events. There are also convenience functions for enabling and
  44.  * disabling tags. Finally four logging listener functions are defined.
  45.  */
  46. /*@{*/
  47. /**
  48.  * Log file formats, currently the Vocalocity proprietary log file
  49.  * format with Latin 1 (ISO-8859-1) encoded characters or Unicode
  50.  * (UTF-8) encoded characters.
  51.  */
  52. #define SBLOG_MIME_TEXT_LATIN1  L"text/plain;charset=ISO-8859-1"
  53. #define SBLOG_MIME_TEXT_UTF8    L"text/plain;charset=UTF-8"
  54. #define SBLOG_MIME_DEFAULT      SBLOG_MIME_TEXT_LATIN1
  55. /**
  56.  * Data that must be initialized then passed as the user data when
  57.  * registering and unregistering SBlogListeners 
  58.  * 
  59.  * @param channel   Logical channel number for the resource
  60.  * @param swirec    SWIrec (OpenSpeech Recognizer) interface, if non-NULL
  61.  *                  events will be logged to the SWIrec event log as well
  62.  *                  as to the SBlogListeners log file.
  63.  */
  64. typedef struct SBlogListenerChannelData {
  65.   VXIint              channel;
  66. } SBlogListenerChannelData;
  67. /**
  68.  * Global platform initialization of SBlogListeners
  69.  *
  70.  * @param  filename          Name of the file where diagnostic, error, and 
  71.  *                           event information will be written. Pass NULL 
  72.  *                           to disable logging to a file.
  73.  * @param  fileMimeType      MIME content type for the log file, currently
  74.  *                           SBLOG_MIME_TEXT_LATIN1 or SBLOG_MIME_TEXT_UTF8
  75.  *                           as defined above, with SBLOG_MIME_TEXT_LATIN1
  76.  *                           used if NULL or an empty string is passed.
  77.  * @param  maxLogSizeBytes   Maximum size of the log file, in bytes. When
  78.  *                           this size is exceeded, the log file is rotated,
  79.  *                           with the existing file moved to a backup name
  80.  *                           (<filename>.old) and a new log file started.
  81.  * @param  contentDir        Directory to use for storing large (potentially
  82.  *                           binary) content that is logged, such as VoiceXML
  83.  *                           documents or waveforms
  84.  * @param  maxContentDirSize Maximum size, in Bytes, of the content logging
  85.  *                           directory (NOTE: currently not implemented, but
  86.  *                           will be in a future release)
  87.  * @param  logToStdout       TRUE to log diagnostic and error messages to
  88.  *                           standard out, FALSE to disable. Event reports
  89.  *                           are never logged to standard out.
  90.  * @param  keepLogFileOpen   TRUE to keep the log file continuously open,
  91.  *                           FALSE to close it when not logging. Performance
  92.  *                           is much better if it is kept open, but doing
  93.  *                           so prevents system operators from manually
  94.  *                           rotating the log file when desired (simply
  95.  *                           moving it to a new name from the command line,
  96.  *                           with a new log file being automatically created).
  97.  * @param  reportErrorText   TRUE to load the XML error mapping files as
  98.  *                           passed in errorMapFiles at startup so that when
  99.  *                           errors are logged the appropriate error text
  100.  *                           from the XML error mapping file is displayed.
  101.  *                           If FALSE, only the error number and module name
  102.  *                           are displayed, with the system operator or
  103.  *                           operations console software responsible for
  104.  *                           the error text lookup. TRUE is best for
  105.  *                           out-of-the-box developer use, while FALSE is
  106.  *                           best for production use (minimizes error
  107.  *                           reporting overhead and network bandwidth for
  108.  *                           transporting errors to the remote console).
  109.  * @param  errorMapFiles     Vector of paths to the XML error mapping files
  110.  *                           that maps error numbers to text for a specific
  111.  *                           component. Used when reportErrorText is TRUE,
  112.  *                           see above.
  113.  *
  114.  * @result VXIlog_RESULT_SUCCESS on success
  115.  */
  116. SBLOGLISTENERS_API VXIlogResult SBlogListenerInit(
  117.  const VXIchar   *filename,
  118.  VXIint32         maxLogSizeBytes,
  119.  VXIbool          logToStdout,
  120.  VXIbool          keepLogFileOpen
  121. );
  122. SBLOGLISTENERS_API VXIlogResult SBlogListenerInitEx(
  123.  const VXIchar   *filename,
  124.  VXIint32         maxLogSizeBytes,
  125.  const VXIchar   *logContentDir,
  126.  VXIint32         maxContentDirSize,
  127.  VXIbool          logToStdout,
  128.  VXIbool          keepLogFileOpen,
  129.  VXIbool          reportErrorText,
  130.  const VXIVector *errorMapFiles
  131. );
  132. SBLOGLISTENERS_API VXIlogResult SBlogListenerInitEx2(
  133.  const VXIchar   *filename,
  134.  const VXIchar   *fileMimeType,
  135.  VXIint32         maxLogSizeBytes,
  136.  const VXIchar   *logContentDir,
  137.  VXIint32         maxContentDirSize,
  138.  VXIbool          logToStdout,
  139.  VXIbool          keepLogFileOpen,
  140.  VXIbool          reportErrorText,
  141.  const VXIVector *errorMapFiles
  142. );
  143. SBLOGLISTENERS_API VXIlogResult SBlogListenerInitEx3(
  144.  const VXIchar   *filename,
  145.  const VXIchar   *fileMimeType,
  146.  VXIint32         maxLogSizeBytes,
  147.  const VXIchar   *logContentDir,
  148.  VXIint32         maxContentDirSize,
  149.  VXIbool          logToStdout, 
  150.  VXIbool          keepLogFileOpen,
  151.  VXIbool          logPerformanceCounter,
  152.  VXIbool          reportErrorText,
  153.  const VXIVector *errorMapFiles
  154. );
  155. /**
  156.  * Global platform shutdown of SBlogListeners
  157.  *
  158.  * @result VXIlog_RESULT_SUCCESS on success
  159.  */
  160. SBLOGLISTENERS_API VXIlogResult SBlogListenerShutDown(void);
  161. /*=========================================================================
  162.  */
  163. /**
  164.  * SBlog listener for diagnostic logging
  165.  *
  166.  * Register this listener with SBlog to use the SBlogListener
  167.  * implementation for diagnostic logging.
  168.  *
  169.  * @result VXIlog_RESULT_SUCCESS on success
  170.  */
  171. SBLOGLISTENERS_API void DiagnosticListener(
  172.   SBlogInterface *pThis,
  173.   VXIunsigned     tagID,
  174.   const VXIchar  *subtag,
  175.   time_t          timestamp,
  176.   VXIunsigned     timestampMsec,
  177.   const VXIchar  *printmsg,
  178.   void           *userdata
  179. );
  180. /**
  181.  * SBlog listener for error logging
  182.  *
  183.  * Register this listener with SBlog to use the SBlogListener
  184.  * implementation for error logging.
  185.  *
  186.  */
  187. SBLOGLISTENERS_API void ErrorListener(
  188.   SBlogInterface   *pThis,
  189.   const VXIchar    *moduleName,
  190.   VXIunsigned       errorID,
  191.   time_t            timestamp,
  192.   VXIunsigned       timestampMsec,
  193.   const VXIVector  *keys,
  194.   const VXIVector  *values,
  195.   void             *userdata
  196. );
  197. /**
  198.  * SBlog listener for event logging
  199.  *
  200.  * Register this listener with SBlog to use the SBlogListener
  201.  * implementation for event logging.
  202.  *
  203.  */
  204. SBLOGLISTENERS_API void EventListener(
  205.   SBlogInterface   *pThis,
  206.   VXIunsigned       eventID,
  207.   time_t            timestamp,
  208.   VXIunsigned       timestampMsec,
  209.   const VXIVector  *keys,
  210.   const VXIVector  *values,
  211.   void             *userdata
  212. );
  213. /**
  214.  * SBlog listener for content logging
  215.  *
  216.  * Register this listener with SBlog to use the SBlogListener
  217.  * implementation for content logging.
  218.  *
  219.  * @result VXIlog_RESULT_SUCCESS on success
  220.  */
  221. SBLOGLISTENERS_API VXIlogResult ContentListener(
  222.   SBlogInterface   *pThis,
  223.   const VXIchar    *moduleName,
  224.   const VXIchar    *contentType,
  225.   void             *userdata,
  226.   VXIString       **logKey,
  227.   VXIString       **logValue,
  228.   SBlogStream     **stream
  229. );
  230. /*=========================================================================
  231.  */
  232. /**
  233.  * Convenience function for enabling a diagnostic tag, identical
  234.  * to calling SBlogInterface::ControlDiagnosticTag
  235.  *
  236.  * @param  tagID    [IN] Identifier that classifies a group of logically
  237.  *                   associated diagnostic messages (usually from a single
  238.  *                   software module) that are desirable to enable or
  239.  *                   disable as a single unit. See the top of SBlog.h
  240.  *                   for tagID allocation rules.
  241.  * @param  state    [IN] Boolean flag to turn the tag on (TRUE) or
  242.  *                   off (FALSE).
  243.  * 
  244.  * @return VXIlog_RESULT_SUCCESS on success
  245.  */
  246. SBLOGLISTENERS_API VXIlogResult ControlDiagnosticTag
  247. (
  248.   VXIlogInterface  *pThis,
  249.   VXIunsigned       tagID,
  250.   VXIbool           state
  251. );
  252. /**
  253.  * Convenience functions for registering and unregistering an error
  254.  * listener, identical to calling
  255.  * SBlogInterface::RegisterErrorListener and
  256.  * SBlogInterface::UnregisterErrorListener except the user data must
  257.  * be a SBlogListener channel log data structure.
  258.  *
  259.  * @param alistener      [IN] The subscribing Listener 
  260.  * @param channelData    [IN] User data that will be returned to the 
  261.  *                        when notification occurs listener.
  262.  *                        Note: the same listener may be 
  263.  *                        registered multiple times, as long
  264.  *                        as unique userdata is passed. In this
  265.  *                        case, the listener will be called once
  266.  *                        for each unique userdata.
  267.  * 
  268.  * @return VXIlog_RESULT_SUCCESS on success 
  269. */
  270. SBLOGLISTENERS_API VXIlogResult RegisterErrorListener(
  271.   VXIlogInterface           *pThis,
  272.   SBlogErrorListener        *alistener,
  273.   SBlogListenerChannelData  *channelData
  274. );  
  275. SBLOGLISTENERS_API VXIlogResult UnregisterErrorListener(
  276.   VXIlogInterface           *pThis,
  277.   SBlogErrorListener        *alistener,
  278.   SBlogListenerChannelData  *channelData
  279. );  
  280. /**
  281.  * Convenience functions for registering and unregistering a diagnostic
  282.  * listener, identical to calling
  283.  * SBlogInterface::RegisterDiagnosticListener and
  284.  * SBlogInterface::UnregisterDiagnosticListener except the user data must
  285.  * be a SBlogListener channel log data structure.
  286.  *
  287.  * @param alistener      [IN] The subscribing Listener 
  288.  * @param channelData    [IN] User data that will be returned to the 
  289.  *                        when notification occurs listener.
  290.  *                        Note: the same listener may be 
  291.  *                        registered multiple times, as long
  292.  *                        as unique userdata is passed. In this
  293.  *                        case, the listener will be called once
  294.  *                        for each unique userdata.
  295.  * 
  296.  * @return VXIlog_RESULT_SUCCESS on success 
  297.  */
  298. SBLOGLISTENERS_API VXIlogResult RegisterDiagnosticListener(
  299.   VXIlogInterface           *pThis,
  300.   SBlogDiagnosticListener   *alistener,
  301.   SBlogListenerChannelData  *channelData
  302. );
  303. SBLOGLISTENERS_API VXIlogResult UnregisterDiagnosticListener(
  304.   VXIlogInterface           *pThis,
  305.   SBlogDiagnosticListener   *alistener,
  306.   SBlogListenerChannelData  *channelData
  307. );
  308. /**
  309.  * Convenience functions for registering and unregistering an event
  310.  * listener, identical to calling
  311.  * SBlogInterface::RegisterEventListener and
  312.  * SBlogInterface::UnregisterEventListener except the user data must
  313.  * be a SBlogListener channel log data structure.
  314.  *
  315.  * @param alistener      [IN] The subscribing Listener 
  316.  * @param channelData    [IN] User data that will be returned to the 
  317.  *                        when notification occurs listener.
  318.  *                        Note: the same listener may be 
  319.  *                        registered multiple times, as long
  320.  *                        as unique userdata is passed. In this
  321.  *                        case, the listener will be called once
  322.  *                        for each unique userdata.
  323.  * 
  324.  * @return VXIlog_RESULT_SUCCESS on success 
  325.  */
  326. SBLOGLISTENERS_API VXIlogResult RegisterEventListener(
  327.   VXIlogInterface           *pThis,
  328.   SBlogEventListener        *alistener,
  329.   SBlogListenerChannelData  *channelData
  330. );  
  331.  
  332. SBLOGLISTENERS_API VXIlogResult UnregisterEventListener(
  333.   VXIlogInterface           *pThis,
  334.   SBlogEventListener        *alistener,
  335.   SBlogListenerChannelData  *channelData
  336. );
  337. /**
  338.  * Convenience functions for registering and unregistering a content
  339.  * listener, identical to calling
  340.  * SBlogInterface::RegisterContentListener and
  341.  * SBlogInterface::UnregisterContentListener except the user data must
  342.  * be a SBlogListener channel log data structure.
  343.  *
  344.  * @param alistener      [IN] The subscribing Listener 
  345.  * @param channelData    [IN] User data that will be returned to the 
  346.  *                        when notification occurs listener.
  347.  *                        Note: the same listener may be 
  348.  *                        registered multiple times, as long
  349.  *                        as unique userdata is passed. In this
  350.  *                        case, the listener will be called once
  351.  *                        for each unique userdata.
  352.  * 
  353.  * @return VXIlog_RESULT_SUCCESS on success 
  354.  */
  355. SBLOGLISTENERS_API VXIlogResult RegisterContentListener(
  356.   VXIlogInterface           *pThis,
  357.   SBlogContentListener      *alistener,
  358.   SBlogListenerChannelData  *channelData
  359. );  
  360.  
  361. SBLOGLISTENERS_API VXIlogResult UnregisterContentListener(
  362.   VXIlogInterface           *pThis,
  363.   SBlogContentListener      *alistener,
  364.   SBlogListenerChannelData  *channelData
  365. );
  366. /*@}*/
  367. #include "VXIheaderSuffix.h"
  368. #endif  /* include guard */