+Header::Header(const struct sr_datafeed_header *structure) :
+ StructureWrapper<Packet, const struct sr_datafeed_header>(structure),
+ PacketPayload()
+{
+}
+
+Header::~Header()
+{
+}
+
+shared_ptr<PacketPayload> Header::get_shared_pointer(Packet *parent)
+{
+ return static_pointer_cast<PacketPayload>(
+ static_pointer_cast<Header>(
+ StructureWrapper<Packet, const struct sr_datafeed_header>::
+ get_shared_pointer(parent)));
+}
+
+int Header::get_feed_version()
+{
+ return structure->feed_version;
+}
+
+Glib::TimeVal Header::get_start_time()
+{
+ return Glib::TimeVal(
+ structure->starttime.tv_sec,
+ structure->starttime.tv_usec);
+}
+
+Meta::Meta(const struct sr_datafeed_meta *structure) :
+ StructureWrapper<Packet, const struct sr_datafeed_meta>(structure),
+ PacketPayload()
+{
+}
+
+Meta::~Meta()
+{
+}
+
+shared_ptr<PacketPayload> Meta::get_shared_pointer(Packet *parent)
+{
+ return static_pointer_cast<PacketPayload>(
+ static_pointer_cast<Meta>(
+ StructureWrapper<Packet, const struct sr_datafeed_meta>::
+ get_shared_pointer(parent)));
+}
+
+map<const ConfigKey *, Glib::VariantBase> Meta::get_config()
+{
+ map<const ConfigKey *, Glib::VariantBase> result;
+ for (auto l = structure->config; l; l = l->next)
+ {
+ auto config = (struct sr_config *) l->data;
+ result[ConfigKey::get(config->key)] = Glib::VariantBase(config->data);
+ }
+ return result;
+}
+
+Logic::Logic(const struct sr_datafeed_logic *structure) :
+ StructureWrapper<Packet, const struct sr_datafeed_logic>(structure),
+ PacketPayload()
+{
+}