1 /*
2  * Copyright (c) Meta Platforms, Inc. and affiliates.
3  *
4  * This source code is licensed under the MIT license found in the
5  * LICENSE file in the root directory of this source tree.
6  */
7 
8 #pragma once
9 #include <memory>
10 #include "ABI47_0_0NativeModulePerfLogger.h"
11 
12 namespace ABI47_0_0facebook {
13 namespace ABI47_0_0React {
14 
15 namespace BridgeNativeModulePerfLogger {
16 void enableLogging(std::unique_ptr<NativeModulePerfLogger> &&logger);
17 void disableLogging();
18 
19 void moduleDataCreateStart(const char *moduleName, int32_t id);
20 void moduleDataCreateEnd(const char *moduleName, int32_t id);
21 
22 /**
23  * Create NativeModule platform object
24  */
25 void moduleCreateStart(const char *moduleName, int32_t id);
26 void moduleCreateCacheHit(const char *moduleName, int32_t id);
27 void moduleCreateConstructStart(const char *moduleName, int32_t id);
28 void moduleCreateConstructEnd(const char *moduleName, int32_t id);
29 void moduleCreateSetUpStart(const char *moduleName, int32_t id);
30 void moduleCreateSetUpEnd(const char *moduleName, int32_t id);
31 void moduleCreateEnd(const char *moduleName, int32_t id);
32 void moduleCreateFail(const char *moduleName, int32_t id);
33 
34 /**
35  * JS require beginning
36  */
37 void moduleJSRequireBeginningStart(const char *moduleName);
38 void moduleJSRequireBeginningCacheHit(const char *moduleName);
39 void moduleJSRequireBeginningEnd(const char *moduleName);
40 void moduleJSRequireBeginningFail(const char *moduleName);
41 
42 /**
43  * JS require ending
44  */
45 void moduleJSRequireEndingStart(const char *moduleName);
46 void moduleJSRequireEndingEnd(const char *moduleName);
47 void moduleJSRequireEndingFail(const char *moduleName);
48 
49 // Sync method calls
50 void syncMethodCallStart(const char *moduleName, const char *methodName);
51 void syncMethodCallArgConversionStart(
52     const char *moduleName,
53     const char *methodName);
54 void syncMethodCallArgConversionEnd(
55     const char *moduleName,
56     const char *methodName);
57 void syncMethodCallExecutionStart(
58     const char *moduleName,
59     const char *methodName);
60 void syncMethodCallExecutionEnd(const char *moduleName, const char *methodName);
61 void syncMethodCallReturnConversionStart(
62     const char *moduleName,
63     const char *methodName);
64 void syncMethodCallReturnConversionEnd(
65     const char *moduleName,
66     const char *methodName);
67 void syncMethodCallEnd(const char *moduleName, const char *methodName);
68 void syncMethodCallFail(const char *moduleName, const char *methodName);
69 
70 // Async method calls
71 void asyncMethodCallStart(const char *moduleName, const char *methodName);
72 void asyncMethodCallArgConversionStart(
73     const char *moduleName,
74     const char *methodName);
75 void asyncMethodCallArgConversionEnd(
76     const char *moduleName,
77     const char *methodName);
78 void asyncMethodCallDispatch(const char *moduleName, const char *methodName);
79 void asyncMethodCallEnd(const char *moduleName, const char *methodName);
80 void asyncMethodCallFail(const char *moduleName, const char *methodName);
81 
82 /**
83  * Pre-processing async method call batch
84  */
85 void asyncMethodCallBatchPreprocessStart();
86 void asyncMethodCallBatchPreprocessEnd(int batchSize);
87 
88 // Async method call execution
89 void asyncMethodCallExecutionStart(
90     const char *moduleName,
91     const char *methodName,
92     int32_t id);
93 void asyncMethodCallExecutionArgConversionStart(
94     const char *moduleName,
95     const char *methodName,
96     int32_t id);
97 void asyncMethodCallExecutionArgConversionEnd(
98     const char *moduleName,
99     const char *methodName,
100     int32_t id);
101 void asyncMethodCallExecutionEnd(
102     const char *moduleName,
103     const char *methodName,
104     int32_t id);
105 void asyncMethodCallExecutionFail(
106     const char *moduleName,
107     const char *methodName,
108     int32_t id);
109 
110 } // namespace BridgeNativeModulePerfLogger
111 
112 } // namespace ABI47_0_0React
113 } // namespace ABI47_0_0facebook
114