xref: /aosp_15_r20/external/cronet/ipc/trace_ipc_message.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2019 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #ifndef IPC_TRACE_IPC_MESSAGE_H_
6*6777b538SAndroid Build Coastguard Worker #define IPC_TRACE_IPC_MESSAGE_H_
7*6777b538SAndroid Build Coastguard Worker 
8*6777b538SAndroid Build Coastguard Worker #include <stdint.h>
9*6777b538SAndroid Build Coastguard Worker 
10*6777b538SAndroid Build Coastguard Worker #include "base/component_export.h"
11*6777b538SAndroid Build Coastguard Worker #include "services/tracing/public/cpp/perfetto/macros.h"
12*6777b538SAndroid Build Coastguard Worker #include "third_party/perfetto/protos/perfetto/trace/track_event/chrome_legacy_ipc.pbzero.h"
13*6777b538SAndroid Build Coastguard Worker 
14*6777b538SAndroid Build Coastguard Worker // When tracing is enabled, emits a trace event with the given category and
15*6777b538SAndroid Build Coastguard Worker // event name and typed arguments for the message's type (message class and line
16*6777b538SAndroid Build Coastguard Worker // number).
17*6777b538SAndroid Build Coastguard Worker #define TRACE_IPC_MESSAGE_SEND(category, name, msg)                          \
18*6777b538SAndroid Build Coastguard Worker   TRACE_EVENT(category, name, [msg](perfetto::EventContext ctx) {            \
19*6777b538SAndroid Build Coastguard Worker     IPC::WriteIpcMessageIdAsProtozero(msg->type(),                           \
20*6777b538SAndroid Build Coastguard Worker                                       ctx.event()->set_chrome_legacy_ipc()); \
21*6777b538SAndroid Build Coastguard Worker   });
22*6777b538SAndroid Build Coastguard Worker 
23*6777b538SAndroid Build Coastguard Worker namespace IPC {
24*6777b538SAndroid Build Coastguard Worker 
25*6777b538SAndroid Build Coastguard Worker // Converts |message_id| into its message class and line number parts and writes
26*6777b538SAndroid Build Coastguard Worker // them to the protozero message |ChromeLegacyIpc| for trace events.
27*6777b538SAndroid Build Coastguard Worker void COMPONENT_EXPORT(IPC)
28*6777b538SAndroid Build Coastguard Worker     WriteIpcMessageIdAsProtozero(uint32_t message_id,
29*6777b538SAndroid Build Coastguard Worker                                  perfetto::protos::pbzero::ChromeLegacyIpc*);
30*6777b538SAndroid Build Coastguard Worker 
31*6777b538SAndroid Build Coastguard Worker }  // namespace IPC
32*6777b538SAndroid Build Coastguard Worker 
33*6777b538SAndroid Build Coastguard Worker #endif  // IPC_TRACE_IPC_MESSAGE_H_
34