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) );
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);
void writeStreamDeclaration(uint16_t stream_index, StreamType type, std::string const &name, std::string const &type_name, std::string const &type_def, std::vector< StreamMetadata > const &metadata)
Definition: Write.cpp:70
std::ostream & getStream()
Definition: Write.cpp:116
void writeSampleHeader(uint16_t stream_index, base::Time const &realtime, base::Time const &logical, uint32_t payload_size)
Definition: Write.cpp:101
Output & operator<<(Output &output, const T &value)
Definition: Write.hpp:89
StreamType
Definition: Format.hpp:157
friend Output & operator<<(Output &output, const T &value)
Definition: Write.hpp:89
void writePrologue(std::ostream &stream)
Definition: Write.cpp:44
CommandType
Definition: Format.hpp:163
uint16_t newStreamIndex()
Definition: Write.cpp:67
Output(std::ostream &stream)
Definition: Write.cpp:60
void registerStream()
Definition: Write.cpp:156
BlockType
Definition: Format.hpp:150
void writeSample(uint16_t stream_index, base::Time const &realtime, base::Time const &logical, void *payload_data, uint32_t payload_size)
Definition: Write.cpp:110
void setSampling(base::Time const &period)
Definition: Write.cpp:152
StreamWriter(std::string const &name, std::string const &type_name, std::vector< StreamMetadata > const &metadata, Output &file)
Definition: Write.cpp:122
Stream * stream
Definition: MultiFileIndex.hpp:150
bool writeSampleHeader(const base::Time ×tamp, uint32_t payload_size)
Definition: Write.cpp:165
Definition: Write.hpp:162
std::ostream & getStream()
Definition: Write.cpp:162