|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once |
|
|
|
#include <memory> |
|
#include <string> |
|
|
|
#include "arrow/io/concurrency.h" |
|
#include "arrow/io/interfaces.h" |
|
#include "arrow/util/visibility.h" |
|
|
|
namespace arrow { |
|
|
|
class MemoryPool; |
|
class Status; |
|
|
|
namespace util { |
|
|
|
class Codec; |
|
|
|
} |
|
|
|
namespace io { |
|
|
|
class ARROW_EXPORT CompressedOutputStream : public OutputStream { |
|
public: |
|
~CompressedOutputStream() override; |
|
|
|
|
|
|
|
|
|
|
|
static Result<std::shared_ptr<CompressedOutputStream>> Make( |
|
util::Codec* codec, const std::shared_ptr<OutputStream>& raw, |
|
MemoryPool* pool = default_memory_pool()); |
|
|
|
|
|
|
|
|
|
|
|
Status Close() override; |
|
Status Abort() override; |
|
bool closed() const override; |
|
|
|
Result<int64_t> Tell() const override; |
|
|
|
Status Write(const void* data, int64_t nbytes) override; |
|
|
|
using Writable::Write; |
|
|
|
Status Flush() override; |
|
|
|
|
|
std::shared_ptr<OutputStream> raw() const; |
|
|
|
private: |
|
ARROW_DISALLOW_COPY_AND_ASSIGN(CompressedOutputStream); |
|
|
|
CompressedOutputStream() = default; |
|
|
|
class ARROW_NO_EXPORT Impl; |
|
std::unique_ptr<Impl> impl_; |
|
}; |
|
|
|
class ARROW_EXPORT CompressedInputStream |
|
: public internal::InputStreamConcurrencyWrapper<CompressedInputStream> { |
|
public: |
|
~CompressedInputStream() override; |
|
|
|
|
|
|
|
|
|
|
|
static Result<std::shared_ptr<CompressedInputStream>> Make( |
|
util::Codec* codec, const std::shared_ptr<InputStream>& raw, |
|
MemoryPool* pool = default_memory_pool()); |
|
|
|
|
|
|
|
bool closed() const override; |
|
Result<std::shared_ptr<const KeyValueMetadata>> ReadMetadata() override; |
|
Future<std::shared_ptr<const KeyValueMetadata>> ReadMetadataAsync( |
|
const IOContext& io_context) override; |
|
|
|
|
|
std::shared_ptr<InputStream> raw() const; |
|
|
|
private: |
|
friend InputStreamConcurrencyWrapper<CompressedInputStream>; |
|
ARROW_DISALLOW_COPY_AND_ASSIGN(CompressedInputStream); |
|
|
|
CompressedInputStream() = default; |
|
|
|
|
|
|
|
Status DoClose(); |
|
Status DoAbort() override; |
|
Result<int64_t> DoTell() const; |
|
Result<int64_t> DoRead(int64_t nbytes, void* out); |
|
Result<std::shared_ptr<Buffer>> DoRead(int64_t nbytes); |
|
|
|
class ARROW_NO_EXPORT Impl; |
|
std::unique_ptr<Impl> impl_; |
|
}; |
|
|
|
} |
|
} |
|
|