| 2167 | StreamDecoder::~StreamDecoder() {} |
| 2168 | |
| 2169 | Status StreamDecoder::Consume(const uint8_t* data, int64_t size) { |
| 2170 | while (size > 0) { |
| 2171 | const auto next_required_size = impl_->next_required_size(); |
| 2172 | if (next_required_size == 0) { |
| 2173 | break; |
| 2174 | } |
| 2175 | if (size < next_required_size) { |
| 2176 | break; |
| 2177 | } |
| 2178 | ARROW_RETURN_NOT_OK(impl_->Consume(data, next_required_size)); |
| 2179 | data += next_required_size; |
| 2180 | size -= next_required_size; |
| 2181 | } |
| 2182 | if (size > 0) { |
| 2183 | return impl_->Consume(data, size); |
| 2184 | } else { |
| 2185 | return arrow::Status::OK(); |
| 2186 | } |
| 2187 | } |
| 2188 | |
| 2189 | Status StreamDecoder::Consume(std::shared_ptr<Buffer> buffer) { |
| 2190 | if (buffer->size() == 0) { |