IBlockOutputStream.h 1.3 KB
Newer Older
1 2
#pragma once

3 4
#include <boost/noncopyable.hpp>

5
#include <Poco/SharedPtr.h>
A
Alexey Milovidov 已提交
6 7

#include <DB/Core/Block.h>
8
#include <DB/Core/Row.h>
9
#include <DB/Storages/StoragePtr.h>
A
Alexey Milovidov 已提交
10 11 12 13 14


namespace DB
{

15 16 17
using Poco::SharedPtr;


A
Alexey Milovidov 已提交
18 19
/** Интерфейс потока для записи данных в БД или в сеть, или в консоль и т. п.
  */
20
class IBlockOutputStream : private boost::noncopyable
A
Alexey Milovidov 已提交
21 22
{
public:
23 24
	
	IBlockOutputStream(StoragePtr owned_storage_ = StoragePtr()) : owned_storage(owned_storage_) {}
A
Alexey Milovidov 已提交
25 26 27 28 29

	/** Записать блок.
	  */
	virtual void write(const Block & block) = 0;

A
Alexey Milovidov 已提交
30 31 32 33
	/** Записать что-нибудь перед началом всех данных или после конца всех данных.
	  */
	virtual void writePrefix() {}
	virtual void writeSuffix() {}
34
	
35 36
	/** Методы для установки дополнительной информации для вывода в поддерживающих её форматах.
	  */
37
	virtual void setRowsBeforeLimit(size_t rows_before_limit) {}
38
	virtual void setTotals(const Block & totals) {}
39
	virtual void setExtremes(const Block & extremes) {}
A
Alexey Milovidov 已提交
40

A
Alexey Milovidov 已提交
41
	virtual ~IBlockOutputStream() {}
42 43 44
	
protected:
	StoragePtr owned_storage;
A
Alexey Milovidov 已提交
45 46
};

47
typedef SharedPtr<IBlockOutputStream> BlockOutputStreamPtr;
A
Alexey Milovidov 已提交
48

49
}