6
6
import datadog .communication .serialization .Writable ;
7
7
import datadog .communication .serialization .WritableFormatter ;
8
8
import datadog .communication .serialization .msgpack .MsgPackWriter ;
9
+ import datadog .trace .api .Config ;
9
10
import datadog .trace .api .WellKnownTags ;
10
11
import datadog .trace .common .metrics .Sink ;
11
12
import java .util .Collection ;
@@ -31,6 +32,7 @@ public class MsgPackDatastreamsPayloadWriter implements DatastreamsPayloadWriter
31
32
private static final byte [] PARENT_HASH = "ParentHash" .getBytes (ISO_8859_1 );
32
33
private static final byte [] BACKLOG_VALUE = "Value" .getBytes (ISO_8859_1 );
33
34
private static final byte [] BACKLOG_TAGS = "Tags" .getBytes (ISO_8859_1 );
35
+ private static final byte [] PRODUCTS_MASK = "ProductMask" .getBytes (ISO_8859_1 );
34
36
35
37
private static final int INITIAL_CAPACITY = 512 * 1024 ;
36
38
@@ -55,9 +57,30 @@ public void reset() {
55
57
buffer .reset ();
56
58
}
57
59
60
+ // extend the list as needed
61
+ private static final int APM_PRODUCT = 1 ; // 00000001
62
+ private static final int DSM_PRODUCT = 2 ; // 00000010
63
+ private static final int DJM_PRODUCT = 4 ; // 00000100
64
+ private static final int PROFILING_PRODUCT = 8 ; // 00001000
65
+
66
+ public long getProductsMask () {
67
+ long productsMask = APM_PRODUCT ;
68
+ if (Config .get ().isDataStreamsEnabled ()) {
69
+ productsMask |= DSM_PRODUCT ;
70
+ }
71
+ if (Config .get ().isDataJobsEnabled ()) {
72
+ productsMask |= DJM_PRODUCT ;
73
+ }
74
+ if (Config .get ().isProfilingEnabled ()) {
75
+ productsMask |= PROFILING_PRODUCT ;
76
+ }
77
+
78
+ return productsMask ;
79
+ }
80
+
58
81
@ Override
59
82
public void writePayload (Collection <StatsBucket > data , String serviceNameOverride ) {
60
- writer .startMap (7 );
83
+ writer .startMap (8 );
61
84
/* 1 */
62
85
writer .writeUTF8 (ENV );
63
86
writer .writeUTF8 (wellKnownTags .getEnv ());
@@ -112,6 +135,10 @@ public void writePayload(Collection<StatsBucket> data, String serviceNameOverrid
112
135
}
113
136
}
114
137
138
+ /* 8 */
139
+ writer .writeUTF8 (PRODUCTS_MASK );
140
+ writer .writeLong (getProductsMask ());
141
+
115
142
buffer .mark ();
116
143
sink .accept (buffer .messageCount (), buffer .slice ());
117
144
buffer .reset ();
0 commit comments