// Copyright 2022 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "components/metrics/structured/delegating_events_processor.h" namespace metrics::structured { DelegatingEventsProcessor::DelegatingEventsProcessor() = default; DelegatingEventsProcessor::~DelegatingEventsProcessor() = default; // Each individual events_processor could be checked, but this will need to be // checked during OnEventsRecord(). bool DelegatingEventsProcessor::ShouldProcessOnEventRecord(const Event& event) { return true; } void DelegatingEventsProcessor::OnEventsRecord(Event* event) { DCHECK(event); for (auto& events_processor : events_processors_) { if (events_processor->ShouldProcessOnEventRecord(*event)) { // Note that every |events_processor| is operating on the same |event|. // Race conditions should be mangaged by the client. events_processor->OnEventsRecord(event); } } } void DelegatingEventsProcessor::AddEventsProcessor( std::unique_ptr events_processor) { DCHECK(events_processor); events_processors_.push_back(std::move(events_processor)); } } // namespace metrics::structured