33 #ifndef POCOLOG_CPP_WRITE_H 34 #define POCOLOG_CPP_WRITE_H 36 #include <pocolog_cpp/Format.hpp> 41 #include <boost/thread/mutex.hpp> 42 #include <typelib/endian_swap.hh> 53 std::ostream& m_stream;
54 uint16_t m_stream_idx;
58 void write(
const T& data)
60 T little_endian = Typelib::Endian::to_little(data);
61 m_stream.write( reinterpret_cast<const char*>(&little_endian),
sizeof(T) );
68 std::ostream& getStream();
70 uint16_t newStreamIndex();
72 void writeStreamDeclaration(uint16_t stream_index,
StreamType type,
73 std::string
const& name, std::string
const& type_name,
74 std::string
const& type_def,
75 std::vector<StreamMetadata>
const& metadata);
76 void writeSampleHeader(uint16_t stream_index, base::Time
const& realtime, base::Time
const& logical, uint32_t payload_size);
77 void writeSample(uint16_t stream_index, base::Time
const& realtime, base::Time
const& logical,
void* payload_data, uint32_t payload_size);
97 { output.write(value);
return output; }
101 { output.write(value);
return output; }
105 { output.write(value);
return output; }
110 uint32_t length(value.length());
111 output.write(length);
112 output.m_stream.write(reinterpret_cast<const char*>(value.c_str()), length);
119 timeval tv = time.toTimeval();
120 output << (uint32_t)tv.tv_sec << (uint32_t)tv.tv_usec;
148 {
return output << static_cast<uint8_t>(
type); }
152 {
return output << static_cast<uint8_t>(
type); }
156 {
return output << static_cast<uint8_t>(
type); }
164 std::string
const m_name;
165 std::string
const m_type_name;
166 std::string
const m_type_def;
167 std::vector<StreamMetadata> m_metadata;
169 uint16_t
const m_stream_idx;
170 uint32_t
const m_type_size;
171 base::Time m_sampling;
186 StreamWriter(std::string
const& name, std::string
const& type_name, std::vector<StreamMetadata>
const& metadata,
Output& file);
199 StreamWriter(std::string
const& name, std::string
const& type_name, Typelib::Registry
const& type_def, std::vector<StreamMetadata>
const& metadata,
Output& file);
202 void registerStream();
207 void setSampling(base::Time
const& period);
209 bool writeSampleHeader(
const base::Time& timestamp, uint32_t payload_size);
211 std::ostream& getStream();
Output & operator<<(Output &output, const CommandType &type)
Definition: Write.hpp:155
StreamType
Definition: Format.hpp:157
void writePrologue(std::ostream &stream)
Definition: Write.cpp:44
CommandType
Definition: Format.hpp:163
Definition: InputDataStream.hpp:8
BlockType
Definition: Format.hpp:150
Definition: FileStream.hpp:7
Stream * stream
Definition: MultiFileIndex.hpp:150
Definition: Write.hpp:162