9
9
10
10
#include < folly/dynamic.h>
11
11
12
- #include < utility>
13
-
14
12
namespace facebook ::react::jsinspector_modern::tracing {
15
13
16
14
// / Arbitrary data structure, which represents payload of the "ProfileChunk"
@@ -19,21 +17,11 @@ struct TraceEventProfileChunk {
19
17
// / Deltas between timestamps of chronolocigally sorted samples.
20
18
// / Will be sent as part of the "ProfileChunk" trace event.
21
19
struct TimeDeltas {
22
- public:
23
- explicit TimeDeltas (std::vector<long long > deltas)
24
- : deltas_(std::move(deltas)) {}
25
-
26
- folly::dynamic asDynamic () const {
27
- folly::dynamic value = folly::dynamic::array ();
28
- for (auto delta : deltas_) {
29
- value.push_back (delta);
30
- }
31
-
32
- return value;
20
+ folly::dynamic toDynamic () const {
21
+ return folly::dynamic::array (deltas.begin (), deltas.end ());
33
22
}
34
23
35
- private:
36
- std::vector<long long > deltas_;
24
+ std::vector<long long > deltas;
37
25
};
38
26
39
27
// / Contains Profile information that will be emitted in this chunk: nodes and
@@ -45,113 +33,73 @@ struct TraceEventProfileChunk {
45
33
struct Node {
46
34
// / Unique call frame in the call stack.
47
35
struct CallFrame {
48
- public:
49
- CallFrame (
50
- std::string codeType,
51
- uint32_t scriptId,
52
- std::string functionName,
53
- std::optional<std::string> url = std::nullopt,
54
- std::optional<uint32_t > lineNumber = std::nullopt,
55
- std::optional<uint32_t > columnNumber = std::nullopt)
56
- : codeType_(std::move(codeType)),
57
- scriptId_ (scriptId),
58
- functionName_(std::move(functionName)),
59
- url_(std::move(url)),
60
- lineNumber_(lineNumber),
61
- columnNumber_(columnNumber) {}
62
-
63
- folly::dynamic asDynamic () const {
36
+ folly::dynamic toDynamic () const {
64
37
folly::dynamic dynamicCallFrame = folly::dynamic::object ();
65
- dynamicCallFrame[" codeType" ] = codeType_ ;
66
- dynamicCallFrame[" scriptId" ] = scriptId_ ;
67
- dynamicCallFrame[" functionName" ] = functionName_ ;
68
- if (url_ .has_value ()) {
69
- dynamicCallFrame[" url" ] = url_ .value ();
38
+ dynamicCallFrame[" codeType" ] = codeType ;
39
+ dynamicCallFrame[" scriptId" ] = scriptId ;
40
+ dynamicCallFrame[" functionName" ] = functionName ;
41
+ if (url .has_value ()) {
42
+ dynamicCallFrame[" url" ] = url .value ();
70
43
}
71
- if (lineNumber_ .has_value ()) {
72
- dynamicCallFrame[" lineNumber" ] = lineNumber_ .value ();
44
+ if (lineNumber .has_value ()) {
45
+ dynamicCallFrame[" lineNumber" ] = lineNumber .value ();
73
46
}
74
- if (columnNumber_ .has_value ()) {
75
- dynamicCallFrame[" columnNumber" ] = columnNumber_ .value ();
47
+ if (columnNumber .has_value ()) {
48
+ dynamicCallFrame[" columnNumber" ] = columnNumber .value ();
76
49
}
77
50
78
51
return dynamicCallFrame;
79
52
}
80
53
81
- private:
82
- std::string codeType_;
83
- uint32_t scriptId_;
84
- std::string functionName_;
85
- std::optional<std::string> url_;
86
- std::optional<uint32_t > lineNumber_;
87
- std::optional<uint32_t > columnNumber_;
54
+ std::string codeType;
55
+ uint32_t scriptId;
56
+ std::string functionName;
57
+ std::optional<std::string> url;
58
+ std::optional<uint32_t > lineNumber;
59
+ std::optional<uint32_t > columnNumber;
88
60
};
89
61
90
- public:
91
- Node (
92
- uint32_t id,
93
- CallFrame callFrame,
94
- std::optional<uint32_t > parentId = std::nullopt)
95
- : id_(id), callFrame_(std::move(callFrame)), parentId_(parentId) {}
96
-
97
- folly::dynamic asDynamic () const {
62
+ folly::dynamic toDynamic () const {
98
63
folly::dynamic dynamicNode = folly::dynamic::object ();
99
64
100
- dynamicNode[" callFrame" ] = callFrame_. asDynamic ();
101
- dynamicNode[" id" ] = id_ ;
102
- if (parentId_ .has_value ()) {
103
- dynamicNode[" parent" ] = parentId_ .value ();
65
+ dynamicNode[" callFrame" ] = callFrame. toDynamic ();
66
+ dynamicNode[" id" ] = id ;
67
+ if (parentId .has_value ()) {
68
+ dynamicNode[" parent" ] = parentId .value ();
104
69
}
105
70
106
71
return dynamicNode;
107
72
}
108
73
109
- private:
110
- uint32_t id_;
111
- CallFrame callFrame_;
112
- std::optional<uint32_t > parentId_;
74
+ uint32_t id;
75
+ CallFrame callFrame;
76
+ std::optional<uint32_t > parentId;
113
77
};
114
78
115
- public:
116
- CPUProfile (std::vector<Node> nodes, std::vector<uint32_t > samples)
117
- : nodes_(std::move(nodes)), samples_(std::move(samples)) {}
118
-
119
- folly::dynamic asDynamic () const {
79
+ folly::dynamic toDynamic () const {
120
80
folly::dynamic dynamicNodes = folly::dynamic::array ();
121
- for (const auto & node : nodes_) {
122
- dynamicNodes.push_back (node.asDynamic ());
123
- }
124
-
125
- folly::dynamic dynamicSamples = folly::dynamic::array ();
126
- for (auto sample : samples_) {
127
- dynamicSamples.push_back (sample);
81
+ dynamicNodes.reserve (nodes.size ());
82
+ for (const auto & node : nodes) {
83
+ dynamicNodes.push_back (node.toDynamic ());
128
84
}
85
+ folly::dynamic dynamicSamples =
86
+ folly::dynamic::array (samples.begin (), samples.end ());
129
87
130
88
return folly::dynamic::object (" nodes" , dynamicNodes)(
131
89
" samples" , dynamicSamples);
132
90
}
133
91
134
- private:
135
- std::vector<Node> nodes_;
136
- std::vector<uint32_t > samples_;
92
+ std::vector<Node> nodes;
93
+ std::vector<uint32_t > samples;
137
94
};
138
95
139
- public:
140
- TraceEventProfileChunk (CPUProfile cpuProfile, TimeDeltas timeDeltas)
141
- : cpuProfile_(std::move(cpuProfile)),
142
- timeDeltas_(std::move(timeDeltas)) {}
143
-
144
- folly::dynamic asDynamic () const {
145
- folly::dynamic value = folly::dynamic::object;
146
- value[" cpuProfile" ] = cpuProfile_.asDynamic ();
147
- value[" timeDeltas" ] = timeDeltas_.asDynamic ();
148
-
149
- return value;
96
+ folly::dynamic toDynamic () const {
97
+ return folly::dynamic::object (" cpuProfile" , cpuProfile.toDynamic ())(
98
+ " timeDeltas" , timeDeltas.toDynamic ());
150
99
}
151
100
152
- private:
153
- CPUProfile cpuProfile_;
154
- TimeDeltas timeDeltas_;
101
+ CPUProfile cpuProfile;
102
+ TimeDeltas timeDeltas;
155
103
};
156
104
157
105
} // namespace facebook::react::jsinspector_modern::tracing
0 commit comments