33 #ifndef POCOLOG_CPP_READ_HPP
34 #define POCOLOG_CPP_READ_HPP
36 #include "pocolog_cpp/Format.hpp"
41 #include <typelib/value_ops.hh>
43 #include <boost/noncopyable.hpp>
55 class DataInputIterator;
60 static const size_t npos =
static_cast<size_t>(-1);
61 static const size_t nstream =
static_cast<size_t>(-1);
64 std::istream* m_input;
66 typedef std::vector<Stream*> Streams;
69 void readBlockData(std::vector<uint8_t>& buffer,
size_t size);
70 bool readStreamDeclaration(
const std::vector<uint8_t>& buffer,
size_t stream_idx,
size_t pos,
size_t size);
77 void init(std::istream& input);
86 static void readBlockData(std::istream&
stream, std::vector<uint8_t>& buffer,
size_t size);
96 std::istream& m_input;
110 , m_size(0), m_datasize(0)
111 , m_begin(
Input::npos)
112 , m_end(
Input::npos) {}
120 m_begin = m_end = pos;
124 m_datasize += m_datasize;
146 std::string m_type_name;
148 Typelib::Type* m_type;
149 Typelib::Registry* m_registry;
152 base::Time m_begin, m_end;
156 ( std::istream& input,
size_t index
157 ,
const std::string& name,
const std::string& type_name
158 , Typelib::Registry* registry );
164 Typelib::Type
const*
getType()
const;
193 Typelib::Type
const* m_sample_type;
194 std::istream* m_input;
200 std::vector<uint8_t> m_buffer;
204 ( Typelib::Type
const* sample_type
205 , std::istream& input,
size_t stream_index
206 ,
size_t first_block,
const BlockHeader& first_header);
208 void readCurBlock(
size_t size);
222 const uint8_t*
getData()
const;
234 std::vector<uint8_t> buffer(m_buffer.begin() + SAMPLE_HEADER_SIZE, m_buffer.end());
235 Typelib::Value v(&out, *m_sample_type);
236 Typelib::load(v, buffer);
245 {
return ! ((*this) == with); }
260 virtual void output(std::ostream& display)
throw();
263 {
virtual void output(std::ostream& display)
throw(); };
265 {
virtual void output(std::ostream& display)
throw(); };
269 const size_t m_index;
273 virtual void output(std::ostream& display)
throw();
282 virtual void output(std::ostream& display)
throw();
293 virtual void output(std::ostream& display)
throw();
300 virtual void output(std::ostream& display)
throw();
307 virtual void output(std::ostream& display)
throw();
314 virtual void output(std::ostream& display)
throw();
322 virtual void output(std::ostream& display)
throw();
std::string getName() const
Definition: Read.cpp:280
DataBlockException(BlockType type, size_t pos)
Definition: Read.hpp:289
ControlStream(std::istream &input, size_t index)
Definition: Read.cpp:324
Typelib::Registry const * getTypeRegistry() const
Definition: Read.cpp:288
BadStreamType(size_t pos)
Definition: Read.hpp:311
bool isValid() const
Definition: Read.hpp:132
~FileException()
Definition: Read.hpp:258
StreamType getType() const
Definition: Read.hpp:134
virtual void output(std::ostream &display)
Definition: Read.cpp:438
virtual void output(std::ostream &display)
Definition: Read.cpp:447
DataInputIterator end()
Definition: Read.cpp:277
DataSizeMismatch(BlockType type, size_t pos)
Definition: Read.hpp:304
virtual BlockHeader newDataBlock(BlockHeader header)=0
base::Time getEndTime() const
Definition: Read.cpp:291
void newBlockAt(size_t pos, size_t size)
Definition: Read.hpp:117
base::Time getBeginTime() const
Definition: Read.cpp:290
~DataBlockException()
Definition: Read.hpp:291
StreamType
Definition: Format.hpp:157
std::string getTypeName() const
Definition: Read.cpp:281
size_t getSize() const
Definition: Read.hpp:138
size_t getIndex() const
Definition: Read.hpp:135
Typelib::Type const * getType() const
Definition: Read.cpp:282
BadDataSize(BlockType type, size_t pos)
Definition: Read.hpp:297
Definition: Format.hpp:159
virtual void output(std::ostream &display)
Definition: Read.cpp:441
std::istream & getInputStream()
Definition: Read.hpp:128
size_t getBeginPos() const
Definition: Read.hpp:136
virtual void output(std::ostream &display)
Definition: Read.cpp:431
virtual BlockHeader newDataBlock(BlockHeader header)
Definition: Read.cpp:327
BlockType
Definition: Format.hpp:150
virtual void output(std::ostream &display)
Definition: Read.cpp:429
virtual ~Stream()
Definition: Read.hpp:130
FileException(size_t pos=Input::npos)
Definition: Read.hpp:256
BadStream(size_t index, size_t pos)
Definition: Read.hpp:271
DataInputIterator begin()
Definition: Read.cpp:275
Stream(std::istream &input, StreamType type=UnknownStreamType, size_t index=Input::nstream)
Definition: Read.hpp:106
virtual void output(std::ostream &display)
Definition: Read.cpp:435
virtual void output(std::ostream &display)
Definition: Read.cpp:426
size_t getEndPos() const
Definition: Read.hpp:137
NoSuchStream(const std::string &name)
Definition: Read.hpp:320
Index & index
Definition: Stream.hpp:17
virtual void output(std::ostream &display)
Definition: Read.cpp:433
const std::string name
Definition: Read.hpp:318
virtual BlockHeader newDataBlock(BlockHeader header)
Definition: Read.cpp:293
Stream * stream
Definition: MultiFileIndex.hpp:150
BadBlockType(size_t type, size_t pos)
Definition: Read.hpp:280
virtual void output(std::ostream &display)
Definition: Read.cpp:444
~NoSuchStream()
Definition: Read.hpp:321
DataStream(std::istream &input, size_t index, const std::string &name, const std::string &type_name, Typelib::Registry *registry)
Definition: Read.cpp:268
size_t getDataSize() const
Definition: Read.hpp:139
~DataStream()
Definition: Read.cpp:272
virtual void output(std::ostream &display)
Definition: Read.cpp:450