Skip to content

Commit de13cd9

Browse files
authored
Merge pull request #81 from AlonParker/release_logic
fixed socket release logic
2 parents fce3049 + 365ce86 commit de13cd9

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

src/main/kotlin/org/phoenixframework/Socket.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,10 @@ internal class StateChangeCallbacks {
6666

6767
/** Clears any callbacks with the matching refs */
6868
fun release(refs: List<String>) {
69-
open = open.filter { refs.contains(it.first) }
70-
close = close.filter { refs.contains(it.first) }
71-
error = error.filter { refs.contains(it.first) }
72-
message = message.filter { refs.contains(it.first) }
73-
69+
open = open.filterNot { refs.contains(it.first) }
70+
close = close.filterNot { refs.contains(it.first) }
71+
error = error.filterNot { refs.contains(it.first) }
72+
message = message.filterNot { refs.contains(it.first) }
7473
}
7574

7675
/** Clears all stored callbacks */
@@ -556,4 +555,4 @@ class Socket(
556555
this.stateChangeCallbacks.error.forEach { it.second.invoke(t, response) }
557556
}
558557

559-
}
558+
}

src/test/kotlin/org/phoenixframework/SocketTest.kt

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,29 @@ class SocketTest {
423423
/* End Remove */
424424
}
425425

426+
@Nested
427+
@DisplayName("release")
428+
inner class Release {
429+
@Test
430+
internal fun `Clears any callbacks with the matching refs`() {
431+
socket.stateChangeCallbacks.onOpen("1") {}
432+
socket.stateChangeCallbacks.onOpen("2") {}
433+
socket.stateChangeCallbacks.onClose("1") {}
434+
socket.stateChangeCallbacks.onClose("2") {}
435+
socket.stateChangeCallbacks.onError("1") { _: Throwable, _: Response? -> }
436+
socket.stateChangeCallbacks.onError("2") { _: Throwable, _: Response? -> }
437+
socket.stateChangeCallbacks.onMessage("1") { }
438+
socket.stateChangeCallbacks.onMessage("2") { }
439+
440+
socket.stateChangeCallbacks.release(listOf("1"))
441+
442+
assertThat(socket.stateChangeCallbacks.open).doesNotContain("1")
443+
assertThat(socket.stateChangeCallbacks.close).doesNotContain("1")
444+
assertThat(socket.stateChangeCallbacks.error).doesNotContain("1")
445+
assertThat(socket.stateChangeCallbacks.message).doesNotContain("1")
446+
}
447+
}
448+
426449
@Nested
427450
@DisplayName("push")
428451
inner class Push {
@@ -1040,4 +1063,4 @@ class SocketTest {
10401063
}
10411064

10421065

1043-
}
1066+
}

0 commit comments

Comments
 (0)