/* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef INCLUDE_PERFETTO_TRACING_TRACING_BACKEND_H_ #define INCLUDE_PERFETTO_TRACING_TRACING_BACKEND_H_ #include <functional> #include <memory> #include <string> #include "perfetto/base/export.h" #include "perfetto/base/platform_handle.h" // The embedder can (but doesn't have to) extend the TracingBackend class and // pass as an argument to Tracing::Initialize(kCustomBackend) to override the // way to reach the service. This is for peculiar cases where the embedder has // a multi-process architecture and wants to override the IPC transport. The // real use-case for this at the time of writing is chromium (+ Mojo IPC). // Extending this class requires depending on the full set of perfetto headers // (not just /public/). Contact the team before doing so as the non-public // headers are not guaranteed to be API stable. namespace perfetto { namespace base { class TaskRunner; } // These classes are declared in headers outside of /public/. class Consumer; class ConsumerEndpoint; class Producer; class ProducerEndpoint; CreateSocketCallback; CreateSocketAsync; // Responsible for connecting to the producer. class PERFETTO_EXPORT_COMPONENT TracingProducerBackend { … }; // Responsible for connecting to the consumer. class PERFETTO_EXPORT_COMPONENT TracingConsumerBackend { … }; class PERFETTO_EXPORT_COMPONENT TracingBackend : public TracingProducerBackend, public TracingConsumerBackend { … }; } // namespace perfetto #endif // INCLUDE_PERFETTO_TRACING_TRACING_BACKEND_H_