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

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 _SBINET_H
  23. #define _SBINET_H
  24. #include "VXIinet.h"                   /* For VXIinet base interface */
  25. #include "VXIlog.h"                    /* For VXIlog interface */
  26. #include "VXIcache.h"                  /* For VXIcache interface */
  27. #include "VXIheaderPrefix.h"
  28. #ifdef SBINET_EXPORTS
  29. #define SBINET_API SYMBOL_EXPORT_DECL
  30. #else
  31. #define SBINET_API SYMBOL_IMPORT_DECL
  32. #endif
  33. #ifdef __cplusplus
  34. extern "C" {
  35. #endif
  36. /**
  37.  * defgroup SBIinet VXIinetInterface Implementation
  38.  *
  39.  * SBinet interface, and implementation of VXIinetInterface
  40.  * for Internet functionality, including HTTP requests, local
  41.  * file access, URL caching, memory buffer caching, and cookie
  42.  * access. <p>
  43.  *
  44.  * The interface is a synchronous interface based on the ANSI/ISO C
  45.  * standard file I/O interface, the only exception is that pre-fetches are
  46.  * asynchronous. The client of the interface may use this in an
  47.  * asynchronous manner by using non-blocking I/O operations, creating
  48.  * threads, or by invoking this from a separate server process. <p>
  49.  *
  50.  * This implementation currently does NOT support INET_MODE_WRITE for
  51.  * http:// access (HTTP PUT), and only supports http://, file://, and
  52.  * OS dependant paths.<p>
  53.  *
  54.  * There is one Internet interface per thread/line.
  55.  */
  56. /*@{*/
  57. /**
  58.  * Default value for the User Agent Name parameter of SBinetInit()
  59.  */
  60. #define SBINET_USER_AGENT_NAME_DEFAULT 
  61.               L"OpenVXITestApp/" VXI_CURRENT_VERSION_STR
  62. /**
  63.  * @name SBInet Properties
  64.  * Properties used in the VXIMap configParams arguments to SBinetInitEx. 
  65.  */
  66. /*@{*/
  67. /** 
  68.  * Rules for mapping file extensions to MIME content types, used for that
  69.  * purpose when accessing local files and file:// URLs. The associated value
  70.  * is a VXIMap whose keys must be an extension (period followed by the
  71.  * extension such as ".txt") with the value being the MIME content type for
  72.  * that extension.
  73.  */
  74. #define SBINET_EXTENSION_RULES       L"com.vocalocity.inet.extension.rules"
  75. /**
  76.  * Rules for determining the proxy to use for given domains.  The associated
  77.  * value is a VXIVector whose entries are VXIString representing a key-value
  78.  * pair delimited by a vertical bar ('|') the key (left of the vertical bar)
  79.  * represents partial URLs to which a proxy applies, and the value is of the
  80.  * form of proxy:port representing the proxy/port combination to be used for
  81.  * the corresponding domain.  The partial URLs are of the form domain/path
  82.  * where the left of the slash ('/') represents a domain (and must start
  83.  * with a dot '.' or be empty) and the part after the slash represents paths
  84.  * on this domain.  If the slash is omitted, then all paths in this domain
  85.  * apply.  Each entry are verified for a match in the order in which they
  86.  * appear in the VXIVector.  Also, if nothing is specified in the proxy
  87.  * field (after the vertical bar), it means that no proxy is used
  88.  *
  89.  * An entry matches a URL if its domain is a suffix of the URL's domain and
  90.  * its path is a prefix of the URL's path.
  91.    For Example:  Assuming the following vector
  92.    1)   ".vocalocity.com/specialPath  | proxy1:port1"
  93.    2)   ".vocalocity.com              |"
  94.    3)   ".com                         | proxy1:port1"
  95.    4)   "                             | proxy2:port2"
  96.    The following URL would use the following proxy.
  97.    www.vocalocity.com                            -> no proxy (rule 2)
  98.    www.vocalocity.com/specialPath/index.html     -> proxy1:port1 (rule1)
  99.    www.foo.bar.com                               -> proxy1:port1 (rule3)
  100.    www.mit.edu                                   -> proxy2:port2 (rule4)
  101.    Also note that if order of rule-1 and rule-2 were reversed, than the
  102.    ".vocalocity.com/specialPath" rule would never be triggered as it is more
  103.    specific than the ".vocalocity.com" rule.
  104.  */
  105. #define SBINET_PROXY_RULES           L"com.vocalocity.inet.proxy.rules"
  106. /**
  107.  * Default timeout for fetching a page when not explicitely specified
  108.  * through the INET_TIMEOUT_DOWNLOAD property in the properties VXIMap
  109.  * argument of the VXIinterface::Open() function.  This value must be a
  110.  * VXIInteger and the units are expressed in milliseconds.  If not
  111.  * specified, the default timeout used is 60000 (1 minute).
  112.  */
  113. #define SBINET_PAGE_LOADING_TIMEOUT  L"com.vocalocity.inet.pageLoadingTimeout"
  114. /** Default value for SBINET_PAGE_LOADING_TIMEOUT */
  115. #define SBINET_PAGE_LOADING_TIMEOUT_DEFAULT  60000
  116. /** 
  117.  * Properties used to estimate the cache lifetime of URIs that only have the
  118.  * Last-Modified header defined.
  119.  *
  120.  * SBINET_FRESHNESS_FRACTION must be a VXIFloat between 0 and 1.<p>
  121.  *
  122.  * SBINET_FRESHNESS_LIFETIME must be a VXIInteger whose units are in
  123.  * milliseconds.<p>
  124.  *
  125.  * The freshness lifetime of an HTTP document having only Last-Modified
  126.  * information is computed as the minimum between the amount of time since
  127.  * the last modification multiplied by SBINET_FRESHNESS_FRACTION and
  128.  * SBINET_FRESHNESS_LIFETIME.<p>
  129.  *
  130.  * freshness = MIN((now - lastMod) * SBINET_FRESHNESS_FRACTION,
  131.  *                 SBINET_FRESHNESS_LIFETIME)
  132.  *
  133.  * Default values are 0.1 for SBINET_FRESHNESS_FRACTION and 86400 (24 hours)
  134.  * for SBINET_FRESHNESS_LIFETIME.
  135.  */
  136. #define SBINET_FRESHNESS_FRACTION    L"com.vocalocity.inet.freshnessFraction"
  137. #define SBINET_FRESHNESS_LIFETIME    L"com.vocalocity.inet.freshnessLifetime"
  138.  /** Default value for SBINET_FRESHNESS_FRACTION */
  139. #define SBINET_FRESHNESS_FRACTION_DEFAULT 0.1
  140. /** Default value for SBINET_FRESHNESS_LIFETIME */
  141. #define SBINET_FRESHNESS_LIFETIME_DEFAULT 86400
  142. /** 
  143.  * If returned paged from web server do not contain any caching information
  144.  * nor any Last-Modified header, this is the amount of time (number of
  145.  * seconds) that the page will be considered fresh before a new HTTP request
  146.  * is performed for this page.  This value must be a VXIInteger and defaults
  147.  * to 0 (immediate expiration) if not specified.
  148.  */
  149. #define SBINET_MAX_LIFETIME          L"com.vocalocity.inet.maxLifetime"
  150. /** Default value for SBINET_MAX_LIFETIME */
  151. #define SBINET_MAX_LIFETIME_DEFAULT 0
  152. /**
  153.  * Number of milliseconds that a POST-request should wait for a response.
  154.  * This value must be a VXIInteger.  Default value is 5000 (5 seconds).
  155.  */
  156. #define SBINET_POST_CONTINUE_TIMEOUT L"com.vocalocity.inet.postContinueTimeout"
  157. /** Default value for SBINET_POST_CONTINUE_TIMEOUT */
  158. #define SBINET_POST_CONTINUE_TIMEOUT_DEFAULT  5000
  159. /**
  160.  * Property specifiying tsent in all HTTP messages.  If specified, it must
  161.  * be a VXIString of the form <app>/<version> with no spaces, such as
  162.  * "OpenVXI/1.0". When using the OpenVXI application name or a derivative,
  163.  * use use VXI_CURRENT_VERSION_STR for the version.  Default value is
  164.  * specified by SBINET_USER_AGENT_NAME_DEFAULT.
  165.  */
  166. #define SBINET_USER_AGENT_NAME L"com.vocalocity.inet.userAgentName"
  167. /**
  168.  * Properties allowing to disable persistent connections.  If this property
  169.  * is specified and is a VXIInteger with a value of 0, then a new connection
  170.  * is established, by default, for each HTTP request.  If this property is
  171.  * not specified or is not a VXIInteger with a value of 0, then persistent
  172.  * connections are enabled.  This property is overridden by the
  173.  * INET_CLOSE_CONNECTION and the INET_NEW_CONNECTION properties that can
  174.  * be passed to the Open() method of the VXIinet interface.
  175.  */
  176. #define SBINET_PERSISTENT_CONNECTIONS L"com.vocalocity.inet.usePersistentConnections"
  177. /** 
  178.  * Default MIME type returned when it was not possible to determine the
  179.  * MIME type of a file URI from its extension or when an HTTP server
  180.  * does not return MIME type information.
  181.  */
  182. #define SBINET_DEFAULT_MIME_TYPE L"com.vocalocity.inet.defaultMimeType"
  183. /*@}*/
  184. /**
  185.  * Global platform initialization of SBinet
  186.  *
  187.  * @param log              VXI Logging interface used for error/diagnostic
  188.  *                         logging, only used for the duration of this
  189.  *                         function call
  190.  * @param reserved1        Reserved for future use
  191.  * @param reserved2        Reserved for future use
  192.  * @param reserved3        Reserved for future use
  193.  * @param reserved4        Reserved for future use
  194.  * @param proxyServer      Name of the proxy server to use for HTTP access,
  195.  *                         pass a server name or IP address, or NULL to
  196.  *                         do direct HTTP access.
  197.  * @param proxyPort        Port number for accessing the proxy server.
  198.  * @param userAgentName    HTTP user agent name sent in all HTTP messages.
  199.  *                         Must be of the form <app>/<version> with no
  200.  *                         spaces, such as "OpenVXI/1.0". When using the
  201.  *                         OpenVXI application name or a derrivative, use
  202.  *                         use VXI_CURRENT_VERSION_STR for the version.
  203.  * @param extensionRules   Rules for mapping file extensions to MIME content
  204.  *                         types, used for that purpose when accessing
  205.  *                         local files and file:// URLs. Each key in the
  206.  *                         map must be an extension (period followed by the
  207.  *                         extension such as ".txt") with the value being
  208.  *                         the MIME content type for that extension.  Copied
  209.  *                         internally so the pointer that is passed in still
  210.  *                         belongs to the caller.
  211.  * @param reserved         Reserved VXIVector, pass NULL
  212.  *
  213.  * @result VXIinet_RESULT_SUCCESS on success
  214.  */
  215. SBINET_API VXIinetResult SBinetInit(VXIlogInterface  *log,
  216.                                     const VXIunsigned diagLogBase,
  217.                                     const VXIchar    *reserved1,
  218.                                     const VXIint      reserved2,
  219.                                     const VXIint      reserved3,
  220.                                     const VXIint      reserved4,
  221.                                     const VXIchar    *proxyServer,
  222.                                     const VXIulong    proxyPort,
  223.                                     const VXIchar    *userAgentName,
  224.                                     const VXIMap     *extensionRules,
  225.                                     const VXIVector  *reserved);
  226. /**
  227.  * Global platform initialization (extended version) of SBinet.
  228.  *
  229.  * @param log              VXI Logging interface used for error/diagnostic
  230.  *                         logging, only used for the duration of this
  231.  *                         function call
  232.  * @param diagLogBase      VXI Diagnostic Logging Base tag.
  233.  * @param configParams     Map containing configuration parameters used to
  234.  *                         initialize SBinet.  These parameters are the
  235.  *                         properties defined above.  Once the function returns,
  236.  *                         this Map can safely be destroyed as it is the
  237.  *                         responsibility of SBinet to copy any data
  238.  *                         it might require after initialization.
  239.  *
  240.  * @result VXIinet_RESULT_SUCCESS on success
  241.  */
  242. SBINET_API VXIinetResult SBinetInitEx(VXIlogInterface  *log,
  243.                                       const VXIunsigned diagLogBase,
  244.                                       const VXIMap     *configParams);
  245. /**
  246.  * Global platform shutdown of SBinet
  247.  *
  248.  * @param log    VXI Logging interface used for error/diagnostic logging,
  249.  *               only used for the duration of this function call
  250.  *
  251.  * @result VXIinet_RESULT_SUCCESS on success
  252.  */
  253. SBINET_API VXIinetResult SBinetShutDown(VXIlogInterface *log);
  254. /**
  255.  * Create a new inet service handle
  256.  *
  257.  * @param log     [IN] VXI Logging interface used for error/diagnostic
  258.  *                logging, must remain a valid pointer throughout the
  259.  *                lifetime of the resource (until SBinetDestroyResource( )
  260.  *                is called)
  261.  * @param cache   [IN] VXI Cache interface used for HTTP document caching,
  262.  *                must remain a valid pointer throughout the lifetime of
  263.  *                the resource (until SBinetDestroyResource( ) is called)
  264.  * @param inet    [IN/OUT] Will hold the created Inet resource.
  265.  *
  266.  * @result VXIinet_RESULT_SUCCESS on success
  267.  */
  268. SBINET_API
  269. VXIinetResult SBinetCreateResource(VXIlogInterface    *log,
  270.                                    VXIcacheInterface  *cache,
  271.                                    VXIinetInterface   **inet);
  272. /**
  273.  * Destroy the interface and free internal resources. Once this is
  274.  *  called, the logging interface passed to SBinetCreateResource()
  275.  *  may be released as well.
  276.  *
  277.  * @param inet [IN/OUT] The inet resource created by SBinetCreateResource()
  278.  *
  279.  * @result VXIinet_RESULT_SUCCESS on success
  280.  */
  281. SBINET_API
  282. VXIinetResult SBinetDestroyResource (VXIinetInterface **inet);
  283.   /*@}*/
  284. #ifdef __cplusplus
  285. }
  286. #endif
  287. #include "VXIheaderSuffix.h"
  288. #endif  /* include guard */