#pragma once #include #include #include #include namespace DB { using Poco::SharedPtr; /** Интерфейс потока для записи данных в БД или в сеть, или в консоль и т. п. */ class IBlockOutputStream : private boost::noncopyable { public: IBlockOutputStream(StoragePtr owned_storage_ = StoragePtr()) : owned_storage(owned_storage_) {} /** Записать блок. */ virtual void write(const Block & block) = 0; /** Записать что-нибудь перед началом всех данных или после конца всех данных. */ virtual void writePrefix() {} virtual void writeSuffix() {} /** Метод для установки поля rows_before_limit для вывода в формате JSON[Compact] */ virtual void setRowsBeforeLimit(size_t rows_before_limit) {} virtual ~IBlockOutputStream() {} protected: StoragePtr owned_storage; }; typedef SharedPtr BlockOutputStreamPtr; }