OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef NET_TRAFFIC_ANNOTATION_NETWORK_TRAFFIC_ANNOTATION_H_ | 5 #ifndef NET_TRAFFIC_ANNOTATION_NETWORK_TRAFFIC_ANNOTATION_H_ |
6 #define NET_TRAFFIC_ANNOTATION_NETWORK_TRAFFIC_ANNOTATION_H_ | 6 #define NET_TRAFFIC_ANNOTATION_NETWORK_TRAFFIC_ANNOTATION_H_ |
7 | 7 |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 | 9 |
10 namespace { | 10 namespace { |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 // This function can be used to define a completing partial annotation. This | 108 // This function can be used to define a completing partial annotation. This |
109 // annotation adds details to another annotation that is defined before. | 109 // annotation adds details to another annotation that is defined before. |
110 // |partial_annotation| is the PartialNetworkTrafficAnnotationTag returned | 110 // |partial_annotation| is the PartialNetworkTrafficAnnotationTag returned |
111 // by a call to DefinePartialNetworkTrafficAnnotation(). | 111 // by a call to DefinePartialNetworkTrafficAnnotation(). |
112 template <size_t N1, size_t N2> | 112 template <size_t N1, size_t N2> |
113 NetworkTrafficAnnotationTag CompleteNetworkTrafficAnnotation( | 113 NetworkTrafficAnnotationTag CompleteNetworkTrafficAnnotation( |
114 const char (&unique_id)[N1], | 114 const char (&unique_id)[N1], |
115 const PartialNetworkTrafficAnnotationTag& partial_annotation, | 115 const PartialNetworkTrafficAnnotationTag& partial_annotation, |
116 const char (&proto)[N2]) { | 116 const char (&proto)[N2]) { |
117 #if defined(_DEBUG) || defined(DCHECK_ALWAYS_ON) | 117 #if defined(_DEBUG) || defined(DCHECK_ALWAYS_ON) |
118 DCHECK_EQ(COMPUTE_STRING_HASH(unique_id), | 118 DCHECK(partial_annotation.completing_id_hash_code == |
119 partial_annotation.completing_id_hash_code); | 119 COMPUTE_STRING_HASH(unique_id) || |
| 120 partial_annotation.unique_id_hash_code == |
| 121 COMPUTE_STRING_HASH("test_partial")); |
120 #endif | 122 #endif |
121 return NetworkTrafficAnnotationTag({partial_annotation.unique_id_hash_code}); | 123 return NetworkTrafficAnnotationTag({partial_annotation.unique_id_hash_code}); |
122 } | 124 } |
123 | 125 |
124 // This function can be used to define a completing partial annotation that is | 126 // This function can be used to define a completing partial annotation that is |
125 // branched into several annotations. In this case, |group_id| is a common id | 127 // branched into several annotations. In this case, |group_id| is a common id |
126 // that is used by all members of the branch and referenced by partial | 128 // that is used by all members of the branch and referenced by partial |
127 // annotation that is completed by them. | 129 // annotation that is completed by them. |
128 template <size_t N1, size_t N2, size_t N3> | 130 template <size_t N1, size_t N2, size_t N3> |
129 NetworkTrafficAnnotationTag BranchedCompleteNetworkTrafficAnnotation( | 131 NetworkTrafficAnnotationTag BranchedCompleteNetworkTrafficAnnotation( |
130 const char (&unique_id)[N1], | 132 const char (&unique_id)[N1], |
131 const char (&group_id)[N2], | 133 const char (&group_id)[N2], |
132 const PartialNetworkTrafficAnnotationTag& partial_annotation, | 134 const PartialNetworkTrafficAnnotationTag& partial_annotation, |
133 const char (&proto)[N3]) { | 135 const char (&proto)[N3]) { |
134 #if defined(_DEBUG) || defined(DCHECK_ALWAYS_ON) | 136 #if defined(_DEBUG) || defined(DCHECK_ALWAYS_ON) |
135 DCHECK_EQ(COMPUTE_STRING_HASH(group_id), | 137 DCHECK(partial_annotation.completing_id_hash_code == |
136 partial_annotation.completing_id_hash_code); | 138 COMPUTE_STRING_HASH(unique_id) || |
| 139 partial_annotation.unique_id_hash_code == |
| 140 COMPUTE_STRING_HASH("test_partial")); |
137 #endif | 141 #endif |
138 return NetworkTrafficAnnotationTag({COMPUTE_STRING_HASH(unique_id)}); | 142 return NetworkTrafficAnnotationTag({COMPUTE_STRING_HASH(unique_id)}); |
139 } | 143 } |
140 | 144 |
141 // Example for joining N x 1 partial annotations: | 145 // Example for joining N x 1 partial annotations: |
142 // N functions foo1(), ..., fooN() call one function bar(). Each | 146 // N functions foo1(), ..., fooN() call one function bar(). Each |
143 // foo...() function defines part of a network traffic annotation. | 147 // foo...() function defines part of a network traffic annotation. |
144 // These N partial annotations are combined with a second part in | 148 // These N partial annotations are combined with a second part in |
145 // bar(). | 149 // bar(). |
146 // | 150 // |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 #define NO_TRAFFIC_ANNOTATION_YET \ | 196 #define NO_TRAFFIC_ANNOTATION_YET \ |
193 net::DefineNetworkTrafficAnnotation("undefined", "Nothing here yet.") | 197 net::DefineNetworkTrafficAnnotation("undefined", "Nothing here yet.") |
194 | 198 |
195 #define MISSING_TRAFFIC_ANNOTATION \ | 199 #define MISSING_TRAFFIC_ANNOTATION \ |
196 net::DefineNetworkTrafficAnnotation( \ | 200 net::DefineNetworkTrafficAnnotation( \ |
197 "missing", "Function called without traffic annotation.") | 201 "missing", "Function called without traffic annotation.") |
198 | 202 |
199 #undef COMPUTE_STRING_HASH | 203 #undef COMPUTE_STRING_HASH |
200 | 204 |
201 #endif // NET_TRAFFIC_ANNOTATION_NETWORK_TRAFFIC_ANNOTATION_H_ | 205 #endif // NET_TRAFFIC_ANNOTATION_NETWORK_TRAFFIC_ANNOTATION_H_ |
OLD | NEW |