summaryrefslogtreecommitdiff
path: root/src/ChunkedDecodingStreamFilter.h
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2012-06-18 23:42:46 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2012-06-18 23:42:46 +0900
commit9ba65aea1d8438c2b6b8eba0b380466983e6c236 (patch)
tree0b3f1f3c8c416cc6f74aaf86f15091eec7d06afa /src/ChunkedDecodingStreamFilter.h
parentf3a5aa3bef17a0d8f86460f034ced4e318699e54 (diff)
Rewritten ChunkedDecodingStreamFilter
Diffstat (limited to 'src/ChunkedDecodingStreamFilter.h')
-rw-r--r--src/ChunkedDecodingStreamFilter.h125
1 files changed, 4 insertions, 121 deletions
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<BinaryStream>& out,
- const SharedHandle<Segment>& 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<BinaryStream>& out,
- const SharedHandle<Segment>& 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<BinaryStream>& out,
- const SharedHandle<Segment>& 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<BinaryStream>& out,
- const SharedHandle<Segment>& 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<BinaryStream>& out,
- const SharedHandle<Segment>& 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<BinaryStream>& out,
- const SharedHandle<Segment>& 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<BinaryStream>& out,
- const SharedHandle<Segment>& segment) const
- {
- return false;
- }
- };
-
- static ReadChunkSizeStateHandler* readChunkSizeStateHandler_;
- static ReadTrailerStateHandler* readTrailerStateHandler_;
- static ReadDataStateHandler* readDataStateHandler_;
- static ReadDataEndStateHandler* readDataEndStateHandler_;
- static StreamEndStatehandler* streamEndStateHandler_;
public:
ChunkedDecodingStreamFilter
(const SharedHandle<StreamFilter>& delegate = SharedHandle<StreamFilter>());