logging/WriterFrontend: Add LogWriteHeader as member

The header captures the enum values as well as the fields
This commit is contained in:
Arne Welzel 2024-11-14 16:52:26 +01:00
parent f5d4526eac
commit 3dd1f8d38a
3 changed files with 38 additions and 20 deletions

View file

@ -536,11 +536,11 @@ Manager::WriterInfo* Manager::FindWriter(WriterFrontend* writer) {
}
bool Manager::CompareFields(const Filter* filter, const WriterFrontend* writer) {
if ( filter->num_fields != writer->NumFields() )
if ( filter->num_fields != static_cast<int>(writer->GetFields().size()) )
return false;
for ( int i = 0; i < filter->num_fields; ++i )
if ( filter->fields[i]->type != writer->Fields()[i]->type )
if ( filter->fields[i]->type != writer->GetFields()[i].type )
return false;
return true;
@ -1779,8 +1779,13 @@ void Manager::SendAllWritersTo(const broker::endpoint_info& ei) {
for ( Stream::WriterMap::iterator i = stream->writers.begin(); i != stream->writers.end(); i++ ) {
WriterFrontend* writer = i->second->writer;
const auto& writer_val = et->GetEnumVal(i->first.first);
broker_mgr->PublishLogCreate((*s)->id, writer_val.get(), *i->second->info, writer->NumFields(),
writer->Fields(), ei);
std::vector<const threading::Field*> fields(writer->GetFields().size());
for ( size_t i = 0; i < writer->GetFields().size(); i++ )
fields[i] = &writer->GetFields()[i];
broker_mgr->PublishLogCreate((*s)->id, writer_val.get(), *i->second->info, fields.size(), fields.data(),
ei);
}
}
}