亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sbinetchannel.cpp

?? OSB-PIK-OpenVXI-3.0.0源代碼 “中國XML論壇 - 專業(yè)的XML技術(shù)討論區(qū)--XML在語音技術(shù)中的應(yīng)用”
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
 /****************License************************************************  *  * Copyright 2000-2003.  ScanSoft, Inc.      *  * Use of this software is subject to notices and obligations set forth   * in the SpeechWorks Public License - Software Version 1.2 which is   * included with this software.   *  * ScanSoft is a registered trademark of ScanSoft, Inc., and OpenSpeech,   * SpeechWorks and the SpeechWorks logo are registered trademarks or   * trademarks of SpeechWorks International, Inc. in the United States   * and other countries.  *  ***********************************************************************/ #ifndef _SB_USE_STD_NAMESPACE #define _SB_USE_STD_NAMESPACE #endif  #define SBINET_EXPORTS #include "VXItypes.h" #include "VXIvalue.h" #include "VXIinet.h" #include "VXItrd.h" #include "VXIlog.h"  #include <SBinet.h> #include "SBinetLog.h"  #include "SBinetHttpCacheStream.hpp" #include "SBinetTimedStream.hpp" #include "SBinetFileStream.hpp" #include "SBinetChannel.h" #include "SBinetURL.h" #include "SBinetCookie.h" #include "SBinetProxyMatcher.hpp" #include "SBinetUtils.hpp" #include "SBinetHttpConnection.hpp" #include "SBinetSSLsocket.hpp"  #include <SWIList.hpp> #include <SWIinputStream.hpp> #include <SWIoutputStream.hpp> #include <SWIdataOutputStream.hpp> #include <SWIipAddress.hpp>  /*****************************************************************************  *****************************************************************************  * SBinetChannel Implementation  *****************************************************************************  *****************************************************************************  */  //Static data members VXItrdMutex *SBinetChannel::_extensionRulesMutex = NULL; VXIMap *SBinetChannel::_extensionRules = NULL; SBinetNString *SBinetChannel::_userAgent = NULL; double SBinetChannel::_freshnessFraction = SBINET_FRESHNESS_FRACTION_DEFAULT; time_t SBinetChannel::_freshnessLifetime = (time_t) SBINET_FRESHNESS_LIFETIME_DEFAULT; time_t SBinetChannel::_maxLifetime = (time_t) SBINET_MAX_LIFETIME_DEFAULT; VXIint32 SBinetChannel::_pageLoadTimeout = SBINET_PAGE_LOADING_TIMEOUT_DEFAULT; VXIint32 SBinetChannel::_postContinueTimeout = SBINET_POST_CONTINUE_TIMEOUT_DEFAULT; SWIList SBinetChannel::_proxyMatcherList; bool SBinetChannel::_usePersistentConnections = true; SBinetString *SBinetChannel::_defaultMimeType = NULL;  SBinetChannel::SBinetChannel( VXIlogInterface* pVXILog, 			      VXIunsigned diagLogBase,                               VXIcacheInterface *pVXIcache):   SWIutilLogger(MODULE_SBINET, pVXILog, diagLogBase), _cookieList(),   _jarChanged(true), _cookiesEnabled(false),   _connectionCount(0), _pVXILog(pVXILog), _pVXICache(pVXIcache),   _echoStream(NULL) {   Diag (MODULE_SBINET_CHANNEL_TAGID, L"SBinetChannel::SBinetChannel", 	L"0x%p", pVXILog);    // Init interface   VXIinetInterface::GetVersion = SBinetChannel::GetVersion;   VXIinetInterface::GetImplementationName =     SBinetChannel::GetImplementationName;    VXIinetInterface::Prefetch = staticPrefetch;   VXIinetInterface::Open = staticOpen;   VXIinetInterface::Read = staticRead;   VXIinetInterface::Write = staticWrite;   VXIinetInterface::Close = staticClose;   VXIinetInterface::SetCookieJar = staticSetCookieJar;   VXIinetInterface::GetCookieJar = staticGetCookieJar;    if ((DiagIsEnabled(MODULE_SBINET_DUMP_HTTP_MSGS)) &&       (LOG_CONTENT_METHODS_SUPPORTED(_pVXILog)))   {     VXIString *logKey = NULL, *logValue = NULL;     if (_pVXILog->ContentOpen(_pVXILog, MODULE_SBINET, VXI_MIME_TEXT, &logKey, 			      &logValue, &_echoStream) == 	VXIlog_RESULT_SUCCESS)     {       Diag(MODULE_SBINET_DUMP_HTTP_MSGS, NULL, 	   L"Dumping HTTP messages, %s=%s", VXIStringCStr(logKey), 	   VXIStringCStr(logValue));       VXIStringDestroy(&logKey);       VXIStringDestroy(&logValue);     }   } }  SBinetChannel::~SBinetChannel( ) {   Diag (MODULE_SBINET_CHANNEL_TAGID, L"SBinetChannel::~SBinetChannel", NULL);   closeHttpConnections();   closeAllStreams();   deleteAllCookies();   if (_echoStream)   {     _pVXILog->ContentClose(_pVXILog, &_echoStream);   }   // NOP //    // NOP //    // NOP // }   /*  * Prefetch: For now punt, eventually spawn thread to call Open() into /dev/null  */ VXIinetResult SBinetChannel::prefetch(const VXIchar*  pszModuleName,                         const VXIchar*  pszName,                         VXIinetOpenMode eMode,                         VXIint32        nFlags,                         const VXIMap*   pProperties ) { #if 0 // NOT YET IMPLEMENTED   /*    * Add prefetch request to prefetch queue. These requests are    * processed when the fetch engine is idle, and the fetched    * documents are stored in the Inet cache until retrieved by    * a subsequent Open call. Note that in order for prefetching    * to work, caching must be enabled, the fetched document must    * be cachable (server must not return a 'no-cache' directive)    * and the caching mode must not be SAFE.    */   Diag( MODULE_SBINET_CHANNEL_TAGID, L"SBinetChannel::Prefetch", 	    L"(%s)", pszName ); #endif   return VXIinet_RESULT_SUCCESS; }   VXIinetResult SBinetChannel::closeAllStreams() {   // should interate over open stream and close gracefully   return(VXIinet_RESULT_SUCCESS); }   static VXIinetResult parseURL(const VXIchar *pszName,                               const VXIMap *properties,                               SWIutilLogger *logger,                               SBinetURL *& url) {   const VXIchar *pszUrlBase = SBinetUtils::getString(properties,                                                      INET_URL_BASE);    VXIinetResult rc = SBinetURL::create(pszName,pszUrlBase,url);    if (rc == VXIinet_RESULT_OUT_OF_MEMORY)   {     logger->Error(103, NULL);   }   else if (rc != VXIinet_RESULT_SUCCESS)   {     logger->Error(200, L"%s%s%s%s", L"Operation", L"Open",                   L"URL", (pszName != NULL) ? pszName : L"NULL");   }    return rc; }  VXIinetStream* SBinetChannel::createHttpStream(SBinetURL *url,                                                const VXIMap *properties) {   SBinetHttpStream::SubmitMethod method = SBinetHttpStream::GET_METHOD;    const VXIchar *methodStr = SBinetUtils::getString(properties,                                                     INET_SUBMIT_METHOD);   if (methodStr == NULL)     methodStr = INET_SUBMIT_METHOD_DEFAULT;    if (!::wcscmp(methodStr, INET_SUBMIT_METHOD_POST))     method = SBinetHttpStream::POST_METHOD;    SBinetStoppableStream *stream = NULL;    if (method == SBinetHttpStream::GET_METHOD)   {     // Get method, append the query arguments to the URL and create a cache     // stream.     const VXIMap *queryArgs =       (const VXIMap *)VXIMapGetProperty(properties, INET_URL_QUERY_ARGS);      url->appendQueryArgsToURL(queryArgs);      stream = new SBinetHttpCacheStream(url, method, this, getCache(),                                        GetLog(), GetDiagBase());   }   else   {     // No caching for POST operations.     stream = new SBinetHttpStream(url, method, this, GetLog(), GetDiagBase());   }    if (stream != NULL)     return new SBinetTimedStream(stream, GetLog(), GetDiagBase());   else     return NULL; }  VXIinetResult SBinetChannel::createStream(SBinetURL *url,                                           const VXIMap *properties,                                           VXIinetStream* &stream) {   /*    * Note: Stream now owns url and must delete on cleanup    */   switch (url->getProtocol())   {    case SBinetURL::HTTP_PROTOCOL:    case SBinetURL::HTTPS_PROTOCOL:      stream = createHttpStream(url, properties);      break;    case SBinetURL::FILE_PROTOCOL:      stream = new SBinetFileStream(url, this, GetLog(), GetDiagBase());      break;     default:      // Can't really happen.      stream = NULL;      break;   }    if (!stream)   {     Error(103, NULL);     delete url;     return VXIinet_RESULT_OUT_OF_MEMORY;   }    return VXIinet_RESULT_SUCCESS; }   /*  * Open: Serious work here.  *   Parse URL and combine with base  *   Collect properties and query args  *   Call appropriate Stream constructor base on URL scheme (http or file)  *   Call Open() on stream  */ VXIinetResult SBinetChannel::open(const VXIchar*   pszModuleName, 		    const  VXIchar*  pszName,                     VXIinetOpenMode  eMode,                     VXIint32         nFlags,                     const VXIMap*    pProperties,                     VXIMap*          pmapStreamInfo,                     VXIinetStream**  ppStream) {   if (eMode != INET_MODE_READ)     return(VXIinet_RESULT_UNSUPPORTED);    if(!ppStream)   {     Error(200, L"%s%s%s%s", L"Operation", L"Open",           L"URL", (pszName != NULL) ? pszName : L"NULL");     return(VXIinet_RESULT_INVALID_ARGUMENT);   }    Diag (MODULE_SBINET_CHANNEL_TAGID, L"SBinetChannel::Open", 	L"(%s)", pszName != NULL ? pszName : L"NULL");    SBinetURL *url;   VXIinetResult rc = ::parseURL(pszName, pProperties, this, url);   if (rc != VXIinet_RESULT_SUCCESS)     return rc;    rc = createStream(url, pProperties, *ppStream);   if (rc != VXIinet_RESULT_SUCCESS)     return rc;    rc = (*ppStream)->Open(nFlags, pProperties, pmapStreamInfo);    switch (rc)   {    case VXIinet_RESULT_SUCCESS:      return VXIinet_RESULT_SUCCESS;      break;    case VXIinet_RESULT_NOT_MODIFIED:    case VXIinet_RESULT_LOCAL_FILE:      // no logging to perform.      break;    case VXIinet_RESULT_FETCH_TIMEOUT:      Error(228, L"%s%s", L"URL", url->getAbsolute());      // no break: intentional    default:      Error(204, L"%s%s%s%d",            L"URL", url->getAbsolute(),            L"rc",rc);      break;   }    delete (*ppStream);   *ppStream = NULL;    return rc; }   VXIinetResult SBinetChannel::close(VXIinetStream**  ppStream) {   if (ppStream == NULL)   {     Error(200, L"%s%s", L"Operation", L"Close");     return(VXIinet_RESULT_INVALID_ARGUMENT);   }   VXIinetStream* st = *ppStream;   VXIinetResult err;   if(st != NULL)   {     err = st->Close();     delete st;     st = NULL;   }   else   {     Error(200, L"%s%s", L"Operation", L"Close");     err = VXIinet_RESULT_INVALID_ARGUMENT;   }   *ppStream = NULL;   return(err); }   VXIinetResult SBinetChannel::setCookieJar( const VXIVector* pJar ) {   deleteAllCookies();    if (pJar == NULL)   {     // NULL jar means 'disable cookie usage'     _jarChanged = false;     _cookiesEnabled = false;     return VXIinet_RESULT_SUCCESS;   }    _cookiesEnabled = true; // Enable cookie usage    VXIunsigned numElements = VXIVectorLength(pJar);    for (VXIunsigned i = 0; i < numElements; i++)   {     const VXIMap *cookie_map = (const VXIMap *) VXIVectorGetElement(pJar, i);     if (cookie_map == NULL)     {       Error (212, NULL);       continue;     }      if (VXIValueGetType((const VXIValue *) cookie_map) != VALUE_MAP)     {       Error (213, L"%s%d", L"VXIValueType",              VXIValueGetType((const VXIValue *) cookie_map));       continue;     }      VXIint32 tempInt = 0;     SBinetUtils::getInteger(cookie_map, INET_COOKIE_EXPIRES, tempInt);     time_t expires = (time_t) tempInt;      // Check if the cookie is expired, if so don't add it, zero     // expiration time means the cookie is not persistent and should not be added.     if(expires < time(0))       continue;      // Get the name     const VXIchar *tempStr = SBinetUtils::getString(cookie_map, INET_COOKIE_NAME);      if (tempStr == NULL)     {       Error(106, NULL);       continue;     }      // convert to narrow string.     SBinetNString name = tempStr;      // Get the domain     tempStr = SBinetUtils::getString(cookie_map, INET_COOKIE_DOMAIN);      SBinetNString domain;     if(tempStr != NULL)     {       domain = tempStr;     }      // Get the path     tempStr = SBinetUtils::getString(cookie_map, INET_COOKIE_PATH);     SBinetNString path;     if(tempStr != NULL)     {       path = tempStr;     }      // Get the secure flag     bool secure = SBinetUtils::getInteger(cookie_map, INET_COOKIE_SECURE, tempInt) && tempInt;      // AC: Why would it be an error to have a cookie withouth the secure attribute?     //        if(tempInt == NULL)     //        {     //          Error(200, NULL);     //          continue;     //        }      // Get the value     tempStr = SBinetUtils::getString(cookie_map,INET_COOKIE_VALUE);     SBinetNString value;     if(tempStr != NULL)     {       value = tempStr;     }      // Create the cookie     SBinetCookie* pSBinetCookie = new SBinetCookie(domain.c_str(), path.c_str(), name.c_str(),                                                    value.c_str(), expires, secure);     // Add the cookie to the channel's list     if (pSBinetCookie  && !addCookie(pSBinetCookie))       delete pSBinetCookie; // Could not add   }    _jarChanged = false;   return VXIinet_RESULT_SUCCESS; }   VXIinetResult SBinetChannel::getCookieJar( VXIVector** ppJar,                                            VXIbool* ppfChanged ) {   time_t now = time(NULL);    if (ppJar == NULL)   {     Error(200, L"%s%s", L"Operation", L"GetCookieJar");     return VXIinet_RESULT_INVALID_ARGUMENT;   }    *ppJar = VXIVectorCreate();   if(*ppJar == NULL)   {     Error(103, NULL);     return VXIinet_RESULT_OUT_OF_MEMORY;   }    // Parse the channel's cookie list   SWIList::Iterator iter(_cookieList);   while (iter.hasNext())   {     SBinetCookie *cookie = (SBinetCookie *) iter.next();      if (cookie->getExpires() < now)       continue;      VXIMap *cookie_map = VXIMapCreate();     if(cookie_map == NULL)     {       VXIVectorDestroy(ppJar);       Error(103, NULL);       return VXIinet_RESULT_OUT_OF_MEMORY;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本高清视频在线观看| 在线观看三级视频欧美| 91激情五月电影| 青娱乐精品视频在线| 亚洲男同性视频| 91精品国产一区二区三区| 日本高清免费不卡视频| 国产一区二区三区视频在线播放| a4yy欧美一区二区三区| 樱桃视频在线观看一区| 精品国产三级电影在线观看| 欧美日韩成人在线一区| 91久久精品一区二区| 91在线播放网址| 成人禁用看黄a在线| 免费高清视频精品| 亚洲mv在线观看| 午夜久久久影院| 国产欧美精品在线观看| 欧美精品一区二区三区四区| 欧美二区在线观看| 91国偷自产一区二区开放时间 | 午夜精品久久久久久| 1024成人网| 欧美激情中文字幕| 精品免费一区二区三区| 欧美一区二区在线观看| 欧美精品日韩精品| 国产成人自拍高清视频在线免费播放| 亚洲精品综合在线| 在线亚洲人成电影网站色www| 欧美一区二区三区免费| 欧美变态口味重另类| 国产精品免费久久久久| 精品三级av在线| 欧美丝袜自拍制服另类| 99re这里都是精品| 91激情在线视频| 欧美日韩国产中文| 欧美老女人第四色| 国产欧美精品国产国产专区| 欧美极品另类videosde| 国产精品久久久久一区二区三区共 | 欧美mv日韩mv亚洲| 欧美一区日本一区韩国一区| 欧美v日韩v国产v| 国产农村妇女精品| 亚洲国产日日夜夜| 久久精品国产精品亚洲综合| 一区二区三区日韩精品视频| 日本欧美久久久久免费播放网| 国产精品自在在线| 色婷婷精品久久二区二区蜜臀av| 日韩一级免费一区| 国产亚洲欧美一区在线观看| 亚洲国产综合人成综合网站| 韩国v欧美v日本v亚洲v| 成人精品小蝌蚪| www欧美成人18+| 亚洲一区精品在线| 亚洲人成在线观看一区二区| 国产激情精品久久久第一区二区| 97久久精品人人爽人人爽蜜臀| 欧美一级xxx| 亚洲乱码一区二区三区在线观看| 免费精品视频在线| 欧美日韩高清不卡| 国产精品久久三| 国内久久婷婷综合| 欧美日韩在线不卡| 中文字幕精品在线不卡| 一区二区三区中文字幕电影 | 国产欧美日韩精品在线| 亚洲国产综合视频在线观看| 成人av手机在线观看| 日韩欧美高清一区| 亚洲一区二区3| 99久久免费精品| 国产无遮挡一区二区三区毛片日本| 午夜精品一区二区三区免费视频| 国产精品1024久久| 欧美电影免费观看完整版| 亚洲欧美激情小说另类| 精品无人区卡一卡二卡三乱码免费卡| 欧美调教femdomvk| 亚洲一区二区欧美日韩| 99精品视频在线观看免费| 久久精品视频一区二区三区| 狠狠色综合播放一区二区| 欧美一区二区在线不卡| 亚洲一区二区三区国产| 日本国产一区二区| 亚洲精品少妇30p| 色诱视频网站一区| 国产亚洲欧洲997久久综合| 国产乱码精品一区二区三区av| 欧美成人一区二区三区在线观看 | 图片区小说区国产精品视频| 99久久夜色精品国产网站| 亚洲国产精品激情在线观看| 久久99国产乱子伦精品免费| 在线观看www91| 亚洲成人www| 欧美美女一区二区三区| 亚洲福利国产精品| 欧美丰满少妇xxxbbb| 日本女人一区二区三区| 亚洲精品在线观| 国产精品99久久久久| 欧美激情一区二区三区不卡 | 亚洲黄一区二区三区| 国产成人亚洲综合a∨婷婷| 8x8x8国产精品| 麻豆freexxxx性91精品| 欧美一级免费观看| 奇米精品一区二区三区在线观看| 欧美成人性福生活免费看| 狠狠色伊人亚洲综合成人| 欧美国产一区二区| 欧美亚洲一区二区三区四区| 亚洲18女电影在线观看| 久久你懂得1024| 95精品视频在线| 亚洲色图欧洲色图婷婷| 91麻豆精品国产91久久久使用方法 | 丁香天五香天堂综合| 亚洲乱码精品一二三四区日韩在线 | 成人午夜精品在线| 精品成人免费观看| 精品一区二区在线观看| 精品女同一区二区| 成a人片国产精品| 日韩在线卡一卡二| 国产精品视频一二| 7777精品伊人久久久大香线蕉完整版 | 国产91色综合久久免费分享| 亚洲图片欧美综合| 国产日韩欧美精品综合| 欧美色老头old∨ideo| 国产99久久精品| 午夜精品久久久久久不卡8050| 中文字幕国产一区| 欧美一区二区三区精品| 成人蜜臀av电影| 麻豆成人免费电影| 亚洲线精品一区二区三区八戒| 久久久久久久久久久久久夜| 欧美日韩国产乱码电影| 99综合电影在线视频| 精品一区二区在线免费观看| 亚洲成人在线免费| 综合电影一区二区三区| 26uuu色噜噜精品一区二区| caoporn国产精品| 日韩不卡手机在线v区| 亚洲精品久久久久久国产精华液| 欧美韩国日本综合| 久久久久国产精品免费免费搜索| 欧美一区二区三区免费| 日本欧美久久久久免费播放网| 久久蜜桃av一区二区天堂| 欧美日韩中文另类| 色综合色狠狠天天综合色| 国产乱对白刺激视频不卡| 免费高清成人在线| 久久精品国产亚洲a| 午夜精品久久久久久久久久久| 久久在线观看免费| 精品久久国产老人久久综合| 91精品国产综合久久国产大片| 色综合网色综合| av电影一区二区| av不卡免费电影| 一本大道av伊人久久综合| 91在线精品秘密一区二区| 国产精品2024| 国产精品一卡二卡在线观看| 亚洲国产aⅴ成人精品无吗| 欧美激情中文字幕一区二区| 国产午夜精品美女毛片视频| 欧美国产日本韩| 中文字幕在线不卡一区二区三区| 一本久久精品一区二区| 欧美成人bangbros| 久久夜色精品一区| 中文字幕亚洲综合久久菠萝蜜| 狠狠色丁香婷综合久久| 欧美肥妇free| 丝袜美腿高跟呻吟高潮一区| 在线观看亚洲精品视频| 日韩影院在线观看| 这里只有精品电影| 国产91精品欧美| 中文字幕中文字幕在线一区| 成人美女视频在线观看18| 亚洲人成影院在线观看| 精品视频1区2区| 国产精品一区二区在线观看不卡| 亚洲欧洲精品天堂一级| 成人免费观看视频|