From 9ba65aea1d8438c2b6b8eba0b380466983e6c236 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Mon, 18 Jun 2012 23:42:46 +0900 Subject: Rewritten ChunkedDecodingStreamFilter --- src/ChunkedDecodingStreamFilter.h | 125 ++------------------------------------ 1 file changed, 4 insertions(+), 121 deletions(-) (limited to 'src/ChunkedDecodingStreamFilter.h') diff --git a/src/ChunkedDecodingStreamFilter.h b/src/ChunkedDecodingStreamFilter.h index 902d3fb5..a5ac2553 100644 --- a/src/ChunkedDecodingStreamFilter.h +++ b/src/ChunkedDecodingStreamFilter.h @@ -2,7 +2,7 @@ /* * aria2 - The high speed download utility * - * Copyright (C) 2010 Tatsuhiro Tsujikawa + * Copyright (C) 2012 Tatsuhiro Tsujikawa * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -41,127 +41,10 @@ namespace aria2 { class ChunkedDecodingStreamFilter : public StreamFilter { private: - class StateHandler { - public: - virtual ~StateHandler() {} - - virtual bool execute - (ChunkedDecodingStreamFilter* filter, - ssize_t& outlen, - size_t& inbufOffset, - const unsigned char* inbuf, - size_t inlen, - const SharedHandle& out, - const SharedHandle& segment) const = 0; - }; - - StateHandler* state_; - - std::string buf_; - - off_t chunkSize_; - + int state_; + int64_t chunkSize_; + int64_t chunkRemaining_; size_t bytesProcessed_; - - static size_t MAX_BUF_SIZE; - - bool readChunkSize - (size_t& inbufOffset, const unsigned char* inbuf, size_t inlen); - - bool readTrailer - (size_t& inbufOffset, const unsigned char* inbuf, size_t inlen); - - bool readData - (ssize_t& outlen, - size_t& inbufOffset, - const unsigned char* inbuf, - size_t inlen, - const SharedHandle& out, - const SharedHandle& segment); - - bool readDataEnd - (size_t& inbufOffset, const unsigned char* inbuf, size_t inlen); - - class ReadChunkSizeStateHandler:public StateHandler { - public: - virtual bool execute - (ChunkedDecodingStreamFilter* filter, - ssize_t& outlen, - size_t& inbufOffset, - const unsigned char* inbuf, - size_t inlen, - const SharedHandle& out, - const SharedHandle& segment) const - { - return filter->readChunkSize(inbufOffset, inbuf, inlen); - } - }; - - class ReadTrailerStateHandler:public StateHandler { - public: - virtual bool execute - (ChunkedDecodingStreamFilter* filter, - ssize_t& outlen, - size_t& inbufOffset, - const unsigned char* inbuf, - size_t inlen, - const SharedHandle& out, - const SharedHandle& segment) const - { - return filter->readTrailer(inbufOffset, inbuf, inlen); - } - }; - - class ReadDataStateHandler:public StateHandler { - public: - virtual bool execute - (ChunkedDecodingStreamFilter* filter, - ssize_t& outlen, - size_t& inbufOffset, - const unsigned char* inbuf, - size_t inlen, - const SharedHandle& out, - const SharedHandle& segment) const - { - return filter->readData(outlen, inbufOffset, inbuf, inlen, out, segment); - } - }; - - class ReadDataEndStateHandler:public StateHandler { - public: - virtual bool execute - (ChunkedDecodingStreamFilter* filter, - ssize_t& outlen, - size_t& inbufOffset, - const unsigned char* inbuf, - size_t inlen, - const SharedHandle& out, - const SharedHandle& segment) const - { - return filter->readDataEnd(inbufOffset, inbuf, inlen); - } - }; - - class StreamEndStatehandler:public StateHandler { - public: - virtual bool execute - (ChunkedDecodingStreamFilter* filter, - ssize_t& outlen, - size_t& inbufOffset, - const unsigned char* inbuf, - size_t inlen, - const SharedHandle& out, - const SharedHandle& segment) const - { - return false; - } - }; - - static ReadChunkSizeStateHandler* readChunkSizeStateHandler_; - static ReadTrailerStateHandler* readTrailerStateHandler_; - static ReadDataStateHandler* readDataStateHandler_; - static ReadDataEndStateHandler* readDataEndStateHandler_; - static StreamEndStatehandler* streamEndStateHandler_; public: ChunkedDecodingStreamFilter (const SharedHandle& delegate = SharedHandle()); -- cgit