Skip to content

Commit 2825b77

Browse files
committed
feat: Add PingEvent and PongEvent.
1 parent 9e95588 commit 2825b77

File tree

2 files changed

+76
-6
lines changed

2 files changed

+76
-6
lines changed

jicoco-mediajson/src/main/kotlin/org/jitsi/mediajson/MediaJson.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ private val objectMapper = jacksonObjectMapper().apply {
3939
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "event")
4040
@JsonSubTypes(
4141
JsonSubTypes.Type(value = MediaEvent::class, name = "media"),
42+
JsonSubTypes.Type(value = PingEvent::class, name = "ping"),
43+
JsonSubTypes.Type(value = PongEvent::class, name = "pong"),
4244
JsonSubTypes.Type(value = StartEvent::class, name = "start"),
4345
)
4446
sealed class Event(val event: String) {
@@ -63,6 +65,14 @@ data class StartEvent(
6365
val start: Start
6466
) : Event("start")
6567

68+
data class PingEvent(
69+
val id: Int
70+
) : Event("ping")
71+
72+
data class PongEvent(
73+
val id: Int
74+
) : Event("pong")
75+
6676
data class MediaFormat(
6777
val encoding: String,
6878
val sampleRate: Int,

jicoco-mediajson/src/test/kotlin/org/jitsi/mediajson/MediaJsonTest.kt

Lines changed: 66 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,38 @@ class MediaJsonTest : ShouldSpec() {
9292
(parsed === event) shouldBe false
9393
}
9494
}
95+
context("PingEvent") {
96+
val id = 42
97+
val event = PingEvent(id)
98+
99+
context("Serializing") {
100+
val parsed = parser.parse(event.toJson())
101+
parsed.shouldBeInstanceOf<JSONObject>()
102+
parsed["event"] shouldBe "ping"
103+
parsed["id"] shouldBe id
104+
}
105+
context("Parsing") {
106+
val parsed = Event.parse(event.toJson())
107+
(parsed == event) shouldBe true
108+
(parsed === event) shouldBe false
109+
}
110+
}
111+
context("PongEvent") {
112+
val id = 123
113+
val event = PongEvent(id)
114+
115+
context("Serializing") {
116+
val parsed = parser.parse(event.toJson())
117+
parsed.shouldBeInstanceOf<JSONObject>()
118+
parsed["event"] shouldBe "pong"
119+
parsed["id"] shouldBe id
120+
}
121+
context("Parsing") {
122+
val parsed = Event.parse(event.toJson())
123+
(parsed == event) shouldBe true
124+
(parsed === event) shouldBe false
125+
}
126+
}
95127
context("Parsing valid samples") {
96128
context("Start") {
97129
val parsed = Event.parse(
@@ -179,15 +211,15 @@ class MediaJsonTest : ShouldSpec() {
179211
context("Media with seq/chunk/timestamp as numbers") {
180212
val parsed = Event.parse(
181213
"""
182-
{
214+
{
183215
"event": "media",
184-
"sequenceNumber": 2,
185-
"media": {
186-
"tag": "incoming",
187-
"chunk": 1,
216+
"sequenceNumber": 2,
217+
"media": {
218+
"tag": "incoming",
219+
"chunk": 1,
188220
"timestamp": 5,
189221
"payload": "no+JhoaJjpzSHxAKBgYJ...=="
190-
}
222+
}
191223
}
192224
""".trimIndent()
193225
)
@@ -200,6 +232,34 @@ class MediaJsonTest : ShouldSpec() {
200232
parsed.media.timestamp shouldBe 5
201233
parsed.media.payload shouldBe "no+JhoaJjpzSHxAKBgYJ...=="
202234
}
235+
context("Ping") {
236+
val parsed = Event.parse(
237+
"""
238+
{
239+
"event": "ping",
240+
"id": 42
241+
}
242+
""".trimIndent()
243+
)
244+
245+
parsed.shouldBeInstanceOf<PingEvent>()
246+
parsed.event shouldBe "ping"
247+
parsed.id shouldBe 42
248+
}
249+
context("Pong") {
250+
val parsed = Event.parse(
251+
"""
252+
{
253+
"event": "pong",
254+
"id": 123
255+
}
256+
""".trimIndent()
257+
)
258+
259+
parsed.shouldBeInstanceOf<PongEvent>()
260+
parsed.event shouldBe "pong"
261+
parsed.id shouldBe 123
262+
}
203263
}
204264
context("Parsing invalid samples") {
205265
context("Invalid sequence number") {

0 commit comments

Comments
 (0)