cleanup
authorVladimir Krivosheev <vladimir.krivosheev@jetbrains.com>
Tue, 26 Apr 2016 14:16:35 +0000 (16:16 +0200)
committerVladimir Krivosheev <vladimir.krivosheev@jetbrains.com>
Tue, 26 Apr 2016 14:16:35 +0000 (16:16 +0200)
platform/built-in-server/src/org/jetbrains/io/jsonRpc/ClientManager.kt

index 5bed61f850813e82acdf42ea7b82ea468033d49b..4eb035b48410c6785f27c533d55ab691a0256959 100644 (file)
@@ -10,22 +10,16 @@ import io.netty.util.AttributeKey
 import org.jetbrains.concurrency.Promise
 import org.jetbrains.io.webSocket.WebSocketServerOptions
 
-val CLIENT = AttributeKey.valueOf<Client>("SocketHandler.client")
+internal val CLIENT = AttributeKey.valueOf<Client>("SocketHandler.client")
 
 class ClientManager(private val listener: ClientListener?, val exceptionHandler: ExceptionHandler, options: WebSocketServerOptions? = null) : Disposable {
-  private val heartbeatTimer = SimpleTimer.getInstance().setUp(Runnable {
-    synchronized (clients) {
-      if (clients.isEmpty) {
-        return@Runnable
-      }
-
-      clients.forEach { client ->
-        if (client.channel.isActive) {
-          client.sendHeartbeat()
-        }
-        true
+  private val heartbeatTimer = SimpleTimer.getInstance().setUp({
+    forEachClient(TObjectProcedure {
+      if (it.channel.isActive) {
+        it.sendHeartbeat()
       }
-    }
+      true
+    })
   }, (options ?: WebSocketServerOptions()).heartbeatDelay.toLong())
 
   private val clients = THashSet<Client>()
@@ -94,10 +88,6 @@ class ClientManager(private val listener: ClientListener?, val exceptionHandler:
 
   fun forEachClient(procedure: TObjectProcedure<Client>) {
     synchronized (clients) {
-      if (clients.isEmpty) {
-        return
-      }
-
       clients.forEach(procedure)
     }
   }