Don't log responses for filtered out requests

This commit is contained in:
Robbert van der Helm
2020-12-19 12:48:18 +01:00
parent 71493299ec
commit 38c37f2721
3 changed files with 175 additions and 170 deletions
+12 -5
View File
@@ -106,9 +106,13 @@ class Vst3MessageHandler : public AdHocSocketHandler<Thread> {
std::optional<std::pair<Vst3Logger&, bool>> logging) {
using TResponse = typename T::Response;
// Since a lot of messages just return a `tresult`, we can't filter out
// responses based on the response message type. Instead, we'll just
// only print the responses when the request was not filtered out.
bool should_log_response = false;
if (logging) {
auto [logger, is_host_vst] = *logging;
logger.log_request(is_host_vst, object);
should_log_response = logger.log_request(is_host_vst, object);
}
// A socket only handles a single request at a time as to prevent
@@ -125,7 +129,7 @@ class Vst3MessageHandler : public AdHocSocketHandler<Thread> {
return std::monostate{};
});
if (logging) {
if (should_log_response) {
auto [logger, is_host_vst] = *logging;
logger.log_response(!is_host_vst, response_object);
}
@@ -165,11 +169,14 @@ class Vst3MessageHandler : public AdHocSocketHandler<Thread> {
const auto process_message =
[&](boost::asio::local::stream_protocol::socket& socket) {
auto request = read_object<Request>(socket);
// See the comment in `receive_into()` for more information
bool should_log_response = false;
if (logging) {
std::visit(
should_log_response = std::visit(
[&](const auto& object) {
auto [logger, is_host_vst] = *logging;
logger.log_request(is_host_vst, object);
return logger.log_request(is_host_vst, object);
},
request);
}
@@ -181,7 +188,7 @@ class Vst3MessageHandler : public AdHocSocketHandler<Thread> {
[&]<typename T>(T object) {
typename T::Response response = callback(object);
if (logging) {
if (should_log_response) {
auto [logger, is_host_vst] = *logging;
logger.log_response(!is_host_vst, response);
}
+104 -106
View File
@@ -35,9 +35,9 @@ void Vst3Logger::log_unknown_interface(
}
}
void Vst3Logger::log_request(bool is_host_vst,
bool Vst3Logger::log_request(bool is_host_vst,
const Vst3PluginProxy::Construct& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << "IPluginFactory::createComponent(cid = "
<< format_uid(Steinberg::FUID::fromTUID(request.cid.data()))
<< ", _iid = ";
@@ -53,18 +53,18 @@ void Vst3Logger::log_request(bool is_host_vst,
});
}
void Vst3Logger::log_request(bool is_host_vst,
bool Vst3Logger::log_request(bool is_host_vst,
const Vst3PluginProxy::Destruct& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
// We don't know what class this instance was originally instantiated
// as, but it also doesn't really matter
message << request.instance_id << ": FUnknown::~FUnknown()";
});
}
void Vst3Logger::log_request(bool is_host_vst,
bool Vst3Logger::log_request(bool is_host_vst,
const Vst3PluginProxy::SetState& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": {IComponent,IEditController}::setState(state = "
"<IBStream* containing "
@@ -72,19 +72,19 @@ void Vst3Logger::log_request(bool is_host_vst,
});
}
void Vst3Logger::log_request(bool is_host_vst,
bool Vst3Logger::log_request(bool is_host_vst,
const Vst3PluginProxy::GetState& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message
<< request.instance_id
<< ": {IComponent,IEditController}::getState(state = <IBStream*>)";
});
}
void Vst3Logger::log_request(
bool Vst3Logger::log_request(
bool is_host_vst,
const YaAudioProcessor::SetBusArrangements& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": IAudioProcessor::setBusArrangements(inputs = "
"[SpeakerArrangement; "
@@ -94,20 +94,20 @@ void Vst3Logger::log_request(
});
}
void Vst3Logger::log_request(
bool Vst3Logger::log_request(
bool is_host_vst,
const YaAudioProcessor::GetBusArrangement& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": IAudioProcessor::getBusArrangement(dir = " << request.dir
<< ", index = " << request.index << ", &arr)";
});
}
void Vst3Logger::log_request(
bool Vst3Logger::log_request(
bool is_host_vst,
const YaAudioProcessor::CanProcessSampleSize& request) {
log_request_base(
return log_request_base(
is_host_vst, Logger::Verbosity::all_events, [&](auto& message) {
message
<< request.instance_id
@@ -117,18 +117,18 @@ void Vst3Logger::log_request(
});
}
void Vst3Logger::log_request(
bool Vst3Logger::log_request(
bool is_host_vst,
const YaAudioProcessor::GetLatencySamples& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": IAudioProcessor::getLatencySamples()";
});
}
void Vst3Logger::log_request(bool is_host_vst,
bool Vst3Logger::log_request(bool is_host_vst,
const YaAudioProcessor::SetupProcessing& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": IAudioProcessor::setupProcessing(setup = "
"<SetupProcessing with mode = "
@@ -139,18 +139,18 @@ void Vst3Logger::log_request(bool is_host_vst,
});
}
void Vst3Logger::log_request(bool is_host_vst,
bool Vst3Logger::log_request(bool is_host_vst,
const YaAudioProcessor::SetProcessing& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": IAudioProcessor::setProcessing(state = "
<< (request.state ? "true" : "false") << ")";
});
}
void Vst3Logger::log_request(bool is_host_vst,
bool Vst3Logger::log_request(bool is_host_vst,
const YaAudioProcessor::Process& request) {
log_request_base(
return log_request_base(
is_host_vst, Logger::Verbosity::all_events, [&](auto& message) {
// This is incredibly verbose, but if you're really a plugin that
// handles processing in a weird way you're going to need all of
@@ -207,35 +207,35 @@ void Vst3Logger::log_request(bool is_host_vst,
});
}
void Vst3Logger::log_request(bool is_host_vst,
bool Vst3Logger::log_request(bool is_host_vst,
const YaAudioProcessor::GetTailSamples& request) {
log_request_base(is_host_vst, Logger::Verbosity::all_events,
[&](auto& message) {
message << request.instance_id
<< ": IAudioProcessor::getTailSamples()";
});
return log_request_base(
is_host_vst, Logger::Verbosity::all_events, [&](auto& message) {
message << request.instance_id
<< ": IAudioProcessor::getTailSamples()";
});
}
void Vst3Logger::log_request(bool is_host_vst,
bool Vst3Logger::log_request(bool is_host_vst,
const YaComponent::SetIoMode& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": IComponent::setIoMode(mode = " << request.mode << ")";
});
}
void Vst3Logger::log_request(bool is_host_vst,
bool Vst3Logger::log_request(bool is_host_vst,
const YaComponent::GetBusCount& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": IComponent::getBusCount(type = " << request.type
<< ", dir = " << request.dir << ")";
});
}
void Vst3Logger::log_request(bool is_host_vst,
bool Vst3Logger::log_request(bool is_host_vst,
const YaComponent::GetBusInfo& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": IComponent::getBusInfo(type = " << request.type
<< ", dir = " << request.dir << ", index = " << request.index
@@ -243,9 +243,9 @@ void Vst3Logger::log_request(bool is_host_vst,
});
}
void Vst3Logger::log_request(bool is_host_vst,
bool Vst3Logger::log_request(bool is_host_vst,
const YaComponent::GetRoutingInfo& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message
<< request.instance_id
<< ": IComponent::getRoutingInfo(inInfo = <RoutingInfo& for bus "
@@ -256,9 +256,9 @@ void Vst3Logger::log_request(bool is_host_vst,
});
}
void Vst3Logger::log_request(bool is_host_vst,
bool Vst3Logger::log_request(bool is_host_vst,
const YaComponent::ActivateBus& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": IComponent::activateBus(type = " << request.type
<< ", dir = " << request.dir << ", index = " << request.index
@@ -266,36 +266,36 @@ void Vst3Logger::log_request(bool is_host_vst,
});
}
void Vst3Logger::log_request(bool is_host_vst,
bool Vst3Logger::log_request(bool is_host_vst,
const YaComponent::SetActive& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id << ": IComponent::setActive(state = "
<< (request.state ? "true" : "false") << ")";
});
}
void Vst3Logger::log_request(bool is_host_vst,
bool Vst3Logger::log_request(bool is_host_vst,
const YaConnectionPoint::Connect& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": IConnectionPoint::connect(other = <IConnectionPoint* #"
<< request.other_instance_id << ">)";
});
}
void Vst3Logger::log_request(bool is_host_vst,
bool Vst3Logger::log_request(bool is_host_vst,
const YaConnectionPoint::Disconnect& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": IConnectionPoint::disconnect(other = <IConnectionPoint* #"
<< request.other_instance_id << ">)";
});
}
void Vst3Logger::log_request(
bool Vst3Logger::log_request(
bool is_host_vst,
const YaEditController2::SetComponentState& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": IEditController::setComponentState(state = <IBStream* "
"containing "
@@ -303,29 +303,29 @@ void Vst3Logger::log_request(
});
}
void Vst3Logger::log_request(
bool Vst3Logger::log_request(
bool is_host_vst,
const YaEditController2::GetParameterCount& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": IEditController::getParameterCount()";
});
}
void Vst3Logger::log_request(
bool Vst3Logger::log_request(
bool is_host_vst,
const YaEditController2::GetParameterInfo& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": IEditController::getParameterInfo(paramIndex = "
<< request.param_index << ", &info)";
});
}
void Vst3Logger::log_request(
bool Vst3Logger::log_request(
bool is_host_vst,
const YaEditController2::GetParamStringByValue& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": IEditController::getParamStringByValue(id = "
<< request.id
@@ -334,10 +334,10 @@ void Vst3Logger::log_request(
});
}
void Vst3Logger::log_request(
bool Vst3Logger::log_request(
bool is_host_vst,
const YaEditController2::GetParamValueByString& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
std::string param_title = VST3::StringConvert::convert(request.string);
message << request.instance_id
<< ": IEditController::getParamValueByString(id = "
@@ -346,10 +346,10 @@ void Vst3Logger::log_request(
});
}
void Vst3Logger::log_request(
bool Vst3Logger::log_request(
bool is_host_vst,
const YaEditController2::NormalizedParamToPlain& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": IEditController::normalizedParamToPlain(id = "
<< request.id
@@ -357,10 +357,10 @@ void Vst3Logger::log_request(
});
}
void Vst3Logger::log_request(
bool Vst3Logger::log_request(
bool is_host_vst,
const YaEditController2::PlainParamToNormalized& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": IEditController::plainParamToNormalized(id = "
<< request.id << ", plainValue = " << request.plain_value
@@ -368,29 +368,29 @@ void Vst3Logger::log_request(
});
}
void Vst3Logger::log_request(
bool Vst3Logger::log_request(
bool is_host_vst,
const YaEditController2::GetParamNormalized& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": IEditController::getParamNormalized(id = " << request.id
<< ")";
});
}
void Vst3Logger::log_request(
bool Vst3Logger::log_request(
bool is_host_vst,
const YaEditController2::SetParamNormalized& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": IEditController::setParamNormalized(id = " << request.id
<< ", value = " << request.value << ")";
});
}
void Vst3Logger::log_request(bool is_host_vst,
bool Vst3Logger::log_request(bool is_host_vst,
const YaPluginBase::Initialize& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id
<< ": IPluginBase::initialize(context = ";
if (request.host_application_context_args) {
@@ -402,28 +402,28 @@ void Vst3Logger::log_request(bool is_host_vst,
});
}
void Vst3Logger::log_request(bool is_host_vst,
bool Vst3Logger::log_request(bool is_host_vst,
const YaPluginBase::Terminate& request) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << request.instance_id << ": IPluginBase::terminate()";
});
}
void Vst3Logger::log_request(bool is_host_vst,
bool Vst3Logger::log_request(bool is_host_vst,
const YaPluginFactory::Construct&) {
log_request_base(is_host_vst,
[&](auto& message) { message << "GetPluginFactory()"; });
return log_request_base(
is_host_vst, [&](auto& message) { message << "GetPluginFactory()"; });
}
void Vst3Logger::log_request(bool is_host_vst,
bool Vst3Logger::log_request(bool is_host_vst,
const YaPluginFactory::SetHostContext&) {
log_request_base(is_host_vst, [&](auto& message) {
return log_request_base(is_host_vst, [&](auto& message) {
message << "IPluginFactory3::setHostContext(IHostApplication*)";
});
}
void Vst3Logger::log_request(bool is_host_vst, const WantsConfiguration&) {
log_request_base(is_host_vst, [&](auto& message) {
bool Vst3Logger::log_request(bool is_host_vst, const WantsConfiguration&) {
return log_request_base(is_host_vst, [&](auto& message) {
message << "Requesting <Configuration>";
});
}
@@ -473,44 +473,42 @@ void Vst3Logger::log_response(
void Vst3Logger::log_response(
bool is_host_vst,
const YaAudioProcessor::ProcessResponse& response) {
log_response_base(
is_host_vst, Logger::Verbosity::all_events, [&](auto& message) {
message << response.result.string();
log_response_base(is_host_vst, [&](auto& message) {
message << response.result.string();
// This is incredibly verbose, but if you're really a plugin that
// handles processing in a weird way you're going to need all of
// this
// This is incredibly verbose, but if you're really a plugin that
// handles processing in a weird way you're going to need all of this
std::ostringstream num_output_channels;
num_output_channels << "[";
for (bool is_first = true;
const auto& buffers : response.output_data.outputs) {
num_output_channels << (is_first ? "" : ", ")
<< buffers.num_channels();
is_first = false;
}
num_output_channels << "]";
std::ostringstream num_output_channels;
num_output_channels << "[";
for (bool is_first = true;
const auto& buffers : response.output_data.outputs) {
num_output_channels << (is_first ? "" : ", ")
<< buffers.num_channels();
is_first = false;
}
num_output_channels << "]";
message << ", <AudioBusBuffers array with "
<< num_output_channels.str() << " channels>";
message << ", <AudioBusBuffers array with " << num_output_channels.str()
<< " channels>";
if (response.output_data.output_parameter_changes) {
message << ", <IParameterChanges* for "
<< response.output_data.output_parameter_changes
->num_parameters()
<< " parameters>";
} else {
message << ", host does not support parameter outputs";
}
if (response.output_data.output_parameter_changes) {
message << ", <IParameterChanges* for "
<< response.output_data.output_parameter_changes
->num_parameters()
<< " parameters>";
} else {
message << ", host does not support parameter outputs";
}
if (response.output_data.output_events) {
message << ", <IEventList* with "
<< response.output_data.output_events->num_events()
<< " events>";
} else {
message << ", host does not support event outputs";
}
});
if (response.output_data.output_events) {
message << ", <IEventList* with "
<< response.output_data.output_events->num_events()
<< " events>";
} else {
message << ", host does not support event outputs";
}
});
}
void Vst3Logger::log_response(bool is_host_vst,
+59 -59
View File
@@ -55,55 +55,58 @@ class Vst3Logger {
// that print information about the request and the response. The boolean
// flag here indicates whether the request was initiated on the host side
// (what we'll call a control message).
// `log_response()` should only be called if the corresponding
// `log_request()` call returned `true`. This way we can filter out the
// log message for the response together with the request.
void log_request(bool is_host_vst, const Vst3PluginProxy::Construct&);
void log_request(bool is_host_vst, const Vst3PluginProxy::Destruct&);
void log_request(bool is_host_vst, const Vst3PluginProxy::SetState&);
void log_request(bool is_host_vst, const Vst3PluginProxy::GetState&);
void log_request(bool is_host_vst,
bool log_request(bool is_host_vst, const Vst3PluginProxy::Construct&);
bool log_request(bool is_host_vst, const Vst3PluginProxy::Destruct&);
bool log_request(bool is_host_vst, const Vst3PluginProxy::SetState&);
bool log_request(bool is_host_vst, const Vst3PluginProxy::GetState&);
bool log_request(bool is_host_vst,
const YaAudioProcessor::SetBusArrangements&);
void log_request(bool is_host_vst,
bool log_request(bool is_host_vst,
const YaAudioProcessor::GetBusArrangement&);
void log_request(bool is_host_vst,
bool log_request(bool is_host_vst,
const YaAudioProcessor::CanProcessSampleSize&);
void log_request(bool is_host_vst,
bool log_request(bool is_host_vst,
const YaAudioProcessor::GetLatencySamples&);
void log_request(bool is_host_vst,
bool log_request(bool is_host_vst,
const YaAudioProcessor::SetupProcessing&);
void log_request(bool is_host_vst, const YaAudioProcessor::SetProcessing&);
void log_request(bool is_host_vst, const YaAudioProcessor::Process&);
void log_request(bool is_host_vst, const YaAudioProcessor::GetTailSamples&);
void log_request(bool is_host_vst, const YaComponent::SetIoMode&);
void log_request(bool is_host_vst, const YaComponent::GetBusCount&);
void log_request(bool is_host_vst, const YaComponent::GetBusInfo&);
void log_request(bool is_host_vst, const YaComponent::GetRoutingInfo&);
void log_request(bool is_host_vst, const YaComponent::ActivateBus&);
void log_request(bool is_host_vst, const YaComponent::SetActive&);
void log_request(bool is_host_vst, const YaConnectionPoint::Connect&);
void log_request(bool is_host_vst, const YaConnectionPoint::Disconnect&);
void log_request(bool is_host_vst,
bool log_request(bool is_host_vst, const YaAudioProcessor::SetProcessing&);
bool log_request(bool is_host_vst, const YaAudioProcessor::Process&);
bool log_request(bool is_host_vst, const YaAudioProcessor::GetTailSamples&);
bool log_request(bool is_host_vst, const YaComponent::SetIoMode&);
bool log_request(bool is_host_vst, const YaComponent::GetBusCount&);
bool log_request(bool is_host_vst, const YaComponent::GetBusInfo&);
bool log_request(bool is_host_vst, const YaComponent::GetRoutingInfo&);
bool log_request(bool is_host_vst, const YaComponent::ActivateBus&);
bool log_request(bool is_host_vst, const YaComponent::SetActive&);
bool log_request(bool is_host_vst, const YaConnectionPoint::Connect&);
bool log_request(bool is_host_vst, const YaConnectionPoint::Disconnect&);
bool log_request(bool is_host_vst,
const YaEditController2::SetComponentState&);
void log_request(bool is_host_vst,
bool log_request(bool is_host_vst,
const YaEditController2::GetParameterCount&);
void log_request(bool is_host_vst,
bool log_request(bool is_host_vst,
const YaEditController2::GetParameterInfo&);
void log_request(bool is_host_vst,
bool log_request(bool is_host_vst,
const YaEditController2::GetParamStringByValue&);
void log_request(bool is_host_vst,
bool log_request(bool is_host_vst,
const YaEditController2::GetParamValueByString&);
void log_request(bool is_host_vst,
bool log_request(bool is_host_vst,
const YaEditController2::NormalizedParamToPlain&);
void log_request(bool is_host_vst,
bool log_request(bool is_host_vst,
const YaEditController2::PlainParamToNormalized&);
void log_request(bool is_host_vst,
bool log_request(bool is_host_vst,
const YaEditController2::GetParamNormalized&);
void log_request(bool is_host_vst,
bool log_request(bool is_host_vst,
const YaEditController2::SetParamNormalized&);
void log_request(bool is_host_vst, const YaPluginBase::Initialize&);
void log_request(bool is_host_vst, const YaPluginBase::Terminate&);
void log_request(bool is_host_vst, const YaPluginFactory::Construct&);
void log_request(bool is_host_vst, const YaPluginFactory::SetHostContext&);
void log_request(bool is_host_vst, const WantsConfiguration&);
bool log_request(bool is_host_vst, const YaPluginBase::Initialize&);
bool log_request(bool is_host_vst, const YaPluginBase::Terminate&);
bool log_request(bool is_host_vst, const YaPluginFactory::Construct&);
bool log_request(bool is_host_vst, const YaPluginFactory::SetHostContext&);
bool log_request(bool is_host_vst, const WantsConfiguration&);
void log_response(bool is_host_vst, const Ack&);
void log_response(
@@ -141,12 +144,11 @@ class Vst3Logger {
* Log a request with a standard prefix based on the boolean flag we pass to
* every logging function so we don't have to repeat it everywhere.
*
* TODO: Make these logging messages return a boolean based on whether or
* not it was filtered out. Don't show the responses for filtered out
* messages.
* Returns `true` if the log message was displayed, and the response should
* thus also be logged.
*/
template <std::invocable<std::ostringstream&> F>
void log_request_base(bool is_host_vst,
bool log_request_base(bool is_host_vst,
Logger::Verbosity min_verbosity,
F callback) {
if (BOOST_UNLIKELY(logger.verbosity >= min_verbosity)) {
@@ -159,38 +161,36 @@ class Vst3Logger {
callback(message);
log(message.str());
return true;
} else {
return false;
}
}
template <std::invocable<std::ostringstream&> F>
void log_request_base(bool is_host_vst, F callback) {
log_request_base(is_host_vst, Logger::Verbosity::most_events, callback);
bool log_request_base(bool is_host_vst, F callback) {
return log_request_base(is_host_vst, Logger::Verbosity::most_events,
callback);
}
/**
* Log a response with a standard prefix based on the boolean flag we pass
* to every logging function so we don't have to repeat it everywhere.
*
* This should only be called when the corresonding `log_request()` returned
* `true`.
*/
template <std::invocable<std::ostringstream&> F>
void log_response_base(bool is_host_vst,
Logger::Verbosity min_verbosity,
F callback) {
if (BOOST_UNLIKELY(logger.verbosity >= min_verbosity)) {
std::ostringstream message;
if (is_host_vst) {
message << "[host -> vst] ";
} else {
message << "[host <- vst] ";
}
callback(message);
log(message.str());
}
}
template <std::invocable<std::ostringstream&> F>
void log_response_base(bool is_host_vst, F callback) {
log_response_base(is_host_vst, Logger::Verbosity::most_events,
callback);
std::ostringstream message;
if (is_host_vst) {
message << "[host -> vst] ";
} else {
message << "[host <- vst] ";
}
callback(message);
log(message.str());
}
};