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);
80 Stream& operator [] (
size_t index)
const;
83 DataStream& getDataStream(
const std::string& name )
const;
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) {}
119 if (m_begin == Input::npos)
120 m_begin = m_end = pos;
121 else if (m_end == Input::npos || 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 );
162 std::string getName()
const;
163 std::string getTypeName()
const;
164 Typelib::Type
const* getType()
const;
165 Typelib::Registry
const* getTypeRegistry()
const;
170 base::Time getBeginTime()
const;
171 base::Time getEndTime()
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);
214 base::Time getRealtime()
const;
215 base::Time getTimestamp()
const;
217 bool isValid()
const;
221 size_t getDataSize()
const;
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();
size_t getEndPos() const
Definition: Read.hpp:137
DataBlockException(BlockType type, size_t pos)
Definition: Read.hpp:289
BadStreamType(size_t pos)
Definition: Read.hpp:311
~FileException()
Definition: Read.hpp:258
size_t getDataSize() const
Definition: Read.hpp:139
DataSizeMismatch(BlockType type, size_t pos)
Definition: Read.hpp:304
void newBlockAt(size_t pos, size_t size)
Definition: Read.hpp:117
~DataBlockException()
Definition: Read.hpp:291
StreamType
Definition: Format.hpp:157
size_t getBeginPos() const
Definition: Read.hpp:136
BadDataSize(BlockType type, size_t pos)
Definition: Read.hpp:297
Definition: InputDataStream.hpp:8
bool isValid() const
Definition: Read.hpp:132
StreamType getType() const
Definition: Read.hpp:134
Definition: Format.hpp:159
std::istream & getInputStream()
Definition: Read.hpp:128
BlockType
Definition: Format.hpp:150
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
Stream(std::istream &input, StreamType type=UnknownStreamType, size_t index=Input::nstream)
Definition: Read.hpp:106
NoSuchStream(const std::string &name)
Definition: Read.hpp:320
Definition: FileStream.hpp:7
const std::string name
Definition: Read.hpp:318
size_t getSize() const
Definition: Read.hpp:138
size_t getIndex() const
Definition: Read.hpp:135
Stream * stream
Definition: MultiFileIndex.hpp:150
BadBlockType(size_t type, size_t pos)
Definition: Read.hpp:280
~NoSuchStream()
Definition: Read.hpp:321