Merge remote-tracking branch 'origin/topic/jsiwek/plist-and-event-cleanup'

* origin/topic/jsiwek/plist-and-event-cleanup:
  Add comments to QueueEvent() and ConnectionEvent()
  Add methods to queue events without handler existence check
  Cleanup/improve PList usage and Event API
This commit is contained in:
Johanna Amann 2019-05-01 08:28:14 -07:00
commit 29d9b5b554
109 changed files with 2080 additions and 1850 deletions

View file

@ -540,9 +540,11 @@ bool Manager::PublishLogWrite(EnumVal* stream, EnumVal* writer, string path, int
std::string serial_data(data, len);
free(data);
val_list vl(2);
vl.append(stream->Ref());
vl.append(new StringVal(path));
val_list vl{
stream->Ref(),
new StringVal(path),
};
Val* v = log_topic_func->Call(&vl);
if ( ! v )
@ -993,7 +995,7 @@ void Manager::ProcessEvent(const broker::topic& topic, broker::bro::Event ev)
return;
}
auto vl = new val_list;
val_list vl(args.size());
for ( auto i = 0u; i < args.size(); ++i )
{
@ -1002,7 +1004,7 @@ void Manager::ProcessEvent(const broker::topic& topic, broker::bro::Event ev)
auto val = data_to_val(std::move(args[i]), expected_type);
if ( val )
vl->append(val);
vl.append(val);
else
{
reporter->Warning("failed to convert remote event '%s' arg #%d,"
@ -1013,10 +1015,13 @@ void Manager::ProcessEvent(const broker::topic& topic, broker::bro::Event ev)
}
}
if ( static_cast<size_t>(vl->length()) == args.size() )
mgr.QueueEvent(handler, vl, SOURCE_BROKER);
if ( static_cast<size_t>(vl.length()) == args.size() )
mgr.QueueEventFast(handler, std::move(vl), SOURCE_BROKER);
else
delete_vals(vl);
{
loop_over_list(vl, i)
Unref(vl[i]);
}
}
bool bro_broker::Manager::ProcessLogCreate(broker::bro::LogCreate lc)
@ -1242,6 +1247,9 @@ void Manager::ProcessStatus(broker::status stat)
break;
}
if ( ! event )
return;
auto ei = internal_type("Broker::EndpointInfo")->AsRecordType();
auto endpoint_info = new RecordVal(ei);
@ -1270,11 +1278,7 @@ void Manager::ProcessStatus(broker::status stat)
auto str = stat.message();
auto msg = new StringVal(str ? *str : "");
auto vl = new val_list;
vl->append(endpoint_info);
vl->append(msg);
mgr.QueueEvent(event, vl);
mgr.QueueEventFast(event, {endpoint_info, msg});
}
void Manager::ProcessError(broker::error err)
@ -1351,10 +1355,10 @@ void Manager::ProcessError(broker::error err)
msg = fmt("[%s] %s", caf::to_string(err.category()).c_str(), caf::to_string(err.context()).c_str());
}
auto vl = new val_list;
vl->append(BifType::Enum::Broker::ErrorCode->GetVal(ec));
vl->append(new StringVal(msg));
mgr.QueueEvent(Broker::error, vl);
mgr.QueueEventFast(Broker::error, {
BifType::Enum::Broker::ErrorCode->GetVal(ec),
new StringVal(msg),
});
}
void Manager::ProcessStoreResponse(StoreHandleVal* s, broker::store::response response)