/* */ #ifndef _D_CHUNKED_ENCODING_H_ #define _D_CHUNKED_ENCODING_H_ #include "TransferEncoding.h" class ChunkedEncoding:public TransferEncoding { private: enum STATE { READ_SIZE, READ_DATA, FINISH }; int32_t chunkSize; int32_t state; char* strbuf; int32_t strbufSize; char* strbufTail; /** * Returns 0 if the size of chunk is retrieved successfully, * otherwise returns non-zero value. */ int32_t readChunkSize(char** pp); int32_t readData(char** pp, char* buf, int32_t& len, int32_t maxlen); void addBuffer(const char* inbuf, int32_t inlen); int32_t readDataEOL(char** pp); public: ChunkedEncoding(); ~ChunkedEncoding(); void init(); void inflate(char* outbuf, int32_t& outlen, const char* inbuf, int32_t inlen); bool finished(); void end(); }; #endif // _D_CHUNKED_ENCODING_H_