| 1 | #pragma once |
|---|---|
| 2 | |
| 3 | #include <DataStreams/IBlockInputStream.h> |
| 4 | #include <Interpreters/Context.h> |
| 5 | |
| 6 | #include <Storages/Kafka/StorageKafka.h> |
| 7 | #include <Storages/Kafka/ReadBufferFromKafkaConsumer.h> |
| 8 | |
| 9 | |
| 10 | namespace DB |
| 11 | { |
| 12 | |
| 13 | class KafkaBlockInputStream : public IBlockInputStream |
| 14 | { |
| 15 | public: |
| 16 | KafkaBlockInputStream( |
| 17 | StorageKafka & storage_, const Context & context_, const Names & columns, size_t max_block_size_, bool commit_in_suffix = true); |
| 18 | ~KafkaBlockInputStream() override; |
| 19 | |
| 20 | String getName() const override { return storage.getName(); } |
| 21 | Block getHeader() const override; |
| 22 | |
| 23 | void readPrefixImpl() override; |
| 24 | Block readImpl() override; |
| 25 | void readSuffixImpl() override; |
| 26 | |
| 27 | void commit(); |
| 28 | |
| 29 | private: |
| 30 | StorageKafka & storage; |
| 31 | Context context; |
| 32 | Names column_names; |
| 33 | UInt64 max_block_size; |
| 34 | |
| 35 | ConsumerBufferPtr buffer; |
| 36 | bool broken = true, claimed = false, commit_in_suffix; |
| 37 | const Block non_virtual_header, virtual_header; |
| 38 | }; |
| 39 | |
| 40 | } |
| 41 |