⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sbinethttpstream.hpp

📁 OSB-PIK-OpenVXI-3.0.0源代码 “中国XML论坛 - 专业的XML技术讨论区--XML在语音技术中的应用”
💻 HPP
字号:
 /****************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 SBINETHTTPSTREAM_HPP #define SBINETHTTPSTREAM_HPP  #include "SBinetStoppableStream.hpp"  class SBinetChannel; class SBinetHttpConnection; class SWIinputStream; class SWIoutputStream; class SBinetValidator;  /**  * This class is responsible to fetch HTTP documents.  **/ class SBinetHttpStream : public SBinetStoppableStream {  public:   enum SubmitMethod { GET_METHOD = 1, POST_METHOD = 2 };   enum EncodingType { TYPE_URL_ENCODED = 1, TYPE_MULTIPART = 2 };   public:   SBinetHttpStream(SBinetURL* url, SubmitMethod method,                    SBinetChannel* ch,                    VXIlogInterface *log, VXIunsigned diagLogBase);    ~SBinetHttpStream();    VXIinetResult Open(VXIint flags, 		     const VXIMap* properties, 		     VXIMap* streamInfo);    VXIinetResult Read(/* [OUT] */ VXIbyte*         pBuffer,                      /* [IN]  */ VXIulong         nBuflen,                      /* [OUT] */ VXIulong*        pnRead );    VXIinetResult Write(/* [IN]  */ const VXIbyte*   pBuffer,                       /* [IN]  */ VXIulong         nBuflen,                       /* [OUT] */ VXIulong*        pnWritten);    VXIinetResult Close();    SBinetChannel* getChannel()   {     return _channel;   }   public:   int getHttpStatus() const   {     return _HttpStatus;   }   public:   const SBinetValidator *getValidator() const   {     return _validator;   }   private:   struct HeaderInfo;    typedef void (*HeaderHandler)(HeaderInfo *,                                 const char *value,                                 SBinetHttpStream *,                                 VXIMap *);    struct HeaderInfo   {     const char *header;     const VXIchar *inet_property;     int value_type;     HeaderHandler handler;   };    VXIinetResult getStatus();    VXIinetResult parseHeaders(VXIMap *streamInfo);    void processHeader(const char *header,                      const char *value,                      VXIMap *streamInfo);    static void connectionHandler(HeaderInfo *headerInfo,                                 const char *value,                                 SBinetHttpStream *stream,                                 VXIMap *streamInfo);    static void setCookieHandler(HeaderInfo *headerInfo,                                const char *value,                                SBinetHttpStream *stream,                                VXIMap *streamInfo);    static void setCookie2Handler(HeaderInfo *headerInfo,                                 const char *value,                                 SBinetHttpStream *stream,                                 VXIMap *streamInfo);    static void defaultHeaderHandler(HeaderInfo *headerInfo,                                    const char *value,                                    SBinetHttpStream *stream,                                    VXIMap *streamInfo);    static void transferEncodingHandler(HeaderInfo *headerInfo,                                       const char *value,                                       SBinetHttpStream *stream,                                       VXIMap *streamInfo);    static void contentLengthHandler(HeaderInfo *headerInfo,                                    const char *value,                                    SBinetHttpStream *stream,                                    VXIMap *streamInfo);    VXIinetResult doGet(VXIint32 flags,                       const VXIMap *properties,                       VXIMap *streamInfo);    VXIinetResult doPost(VXIint32 flags,                        const VXIMap *properties,                        VXIMap *streamInfo);    VXIinetResult getHeaderInfo(VXIMap* streamInfo);   void processHeaderInfo(VXIMap *streamInfo);   void setValidatorInfo(VXIMap *streamInfo, time_t requestTime);    bool handleRedirect(VXIMap *streamInfo);   void sendCookies();    VXIinetResult MapError(int ht_error, const VXIchar **errorDesc);     VXIinetResult getChunkSize(VXIulong& chunkSize);   int readChunked(/* [OUT] */ VXIbyte*         buffer,                   /* [IN]  */ VXIulong         buflen);    int readNormal(/* [OUT] */ VXIbyte*         buffer,                  /* [IN]  */ VXIulong         buflen);   private:   VXIinetResult initSocket(SubmitMethod method,                            const VXIMap *properties,                            VXIMap *streamInfo);    void writeDebugTimeStamp();    int getValue(char *&value, unsigned long mask);   int getHeader(char *&header, char delimiter);   int getHeaderValue(char *&header, char *&value);    int _HttpStatus;    // The number of bytes to read in the current chunk if _chunked is true or   // in the stream if _chunked is falsed.   VXIulong _leftToRead;   bool _chunked;    SubmitMethod _method;    SBinetChannel* _channel;    SBinetHttpConnection *_connection;   SWIinputStream *_inputStream;   SWIoutputStream *_outputStream;    VXIint32 _closeConnection;   VXIint32 _connectionAborted;    static HeaderInfo headerInfoMap[];   static HeaderInfo* findHeaderInfo(const char *header);    VXIinetResult waitStreamReady();   EncodingType getEncodingType(const VXIMap *properties);    VXIinetResult skipBody();    SBinetValidator* _validator; };  #endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -