@@ -205,6 +205,7 @@ object LwcMessages {
205
205
private val Heartbeat = 5
206
206
private val Event = 6
207
207
private val SubscriptionV2 = 7
208
+ private val DatapointV2 = 8
208
209
209
210
/**
210
211
* Encode messages using Jackson's smile format into a ByteString.
@@ -262,7 +263,7 @@ object LwcMessages {
262
263
gen.writeNumber(s.step)
263
264
}
264
265
gen.writeEndArray()
265
- case msg : LwcDatapoint =>
266
+ case msg : LwcDatapoint if msg.samples.isEmpty =>
266
267
gen.writeNumber(Datapoint )
267
268
gen.writeNumber(msg.timestamp)
268
269
gen.writeString(msg.id)
@@ -275,6 +276,20 @@ object LwcMessages {
275
276
gen.writeString(v)
276
277
}
277
278
gen.writeNumber(msg.value)
279
+ case msg : LwcDatapoint =>
280
+ gen.writeNumber(DatapointV2 )
281
+ gen.writeNumber(msg.timestamp)
282
+ gen.writeString(msg.id)
283
+ // Should already be sorted, but convert if needed to ensure we can rely on
284
+ // the order. It will be a noop if already a SortedTagMap.
285
+ val tags = SortedTagMap (msg.tags)
286
+ gen.writeNumber(tags.size)
287
+ tags.foreachEntry { (k, v) =>
288
+ gen.writeString(k)
289
+ gen.writeString(v)
290
+ }
291
+ gen.writeNumber(msg.value)
292
+ Json .encode(gen, msg.samples)
278
293
case msg : LwcDiagnosticMessage =>
279
294
gen.writeNumber(LwcDiagnostic )
280
295
gen.writeString(msg.id)
@@ -355,6 +370,13 @@ object LwcMessages {
355
370
val tags = parseTags(parser, parser.nextIntValue(0 ))
356
371
val value = nextDouble(parser)
357
372
builder += LwcDatapoint (timestamp, id, tags, value)
373
+ case DatapointV2 =>
374
+ val timestamp = parser.nextLongValue(- 1L )
375
+ val id = parser.nextTextValue()
376
+ val tags = parseTags(parser, parser.nextIntValue(0 ))
377
+ val value = nextDouble(parser)
378
+ val samples = parseSamples(parser)
379
+ builder += LwcDatapoint (timestamp, id, tags, value, samples)
358
380
case LwcDiagnostic =>
359
381
val id = parser.nextTextValue()
360
382
val typeName = parser.nextTextValue()
0 commit comments