+record JsonCallMessage(
+ @JsonInclude(JsonInclude.Include.NON_NULL) Offer offerMessage,
+ @JsonInclude(JsonInclude.Include.NON_NULL) Answer answerMessage,
+ @JsonInclude(JsonInclude.Include.NON_NULL) Busy busyMessage,
+ @JsonInclude(JsonInclude.Include.NON_NULL) Hangup hangupMessage,
+ @JsonInclude(JsonInclude.Include.NON_EMPTY) List<IceUpdate> iceUpdateMessages
+) {
+
+ static JsonCallMessage from(MessageEnvelope.Call callMessage) {
+ return new JsonCallMessage(callMessage.offer().map(Offer::from).orElse(null),
+ callMessage.answer().map(Answer::from).orElse(null),
+ callMessage.busy().map(Busy::from).orElse(null),
+ callMessage.hangup().map(Hangup::from).orElse(null),
+ callMessage.iceUpdate().stream().map(IceUpdate::from).toList());
+ }