ClickHouse/dbms/src/Storages/Kafka/KafkaBlockInputStream.h
Ivan Lezhankin 39e2563f93 Create new consumers on-demand
and give them some time for graceful assignment.
2019-01-30 20:58:49 +03:00

36 lines
920 B
C++

#pragma once
#include <DataStreams/IBlockInputStream.h>
#include <IO/DelimitedReadBuffer.h>
#include <Interpreters/Context.h>
#include <Storages/Kafka/StorageKafka.h>
namespace DB
{
class KafkaBlockInputStream : public IBlockInputStream
{
public:
KafkaBlockInputStream(StorageKafka & storage_, const Context & context_, const String & schema, size_t max_block_size_);
~KafkaBlockInputStream() override;
String getName() const override { return storage.getName(); }
Block readImpl() override { return children.back()->read(); }
Block getHeader() const override { return storage.getSampleBlock(); }
void readPrefixImpl() override;
void readSuffixImpl() override;
private:
StorageKafka & storage;
Context context;
size_t max_block_size;
ConsumerPtr consumer;
std::unique_ptr<DelimitedReadBuffer> buffer;
bool broken = true, claimed = false;
};
} // namespace DB