From 637c4edb6d804f36ccd46999c1f5e48fa0606b39 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Tue, 20 Nov 2018 19:04:50 +0100 Subject: [PATCH] SocketConnectionFactory API improvements @NotNull, specify bind address for server socket connection, convert classes to interfaces to enable Kotlin SAM conversions --- .../socketConnection/AbstractResponseHandler.java | 6 ++++-- .../AbstractResponseToRequestHandler.java | 9 +++++++-- .../socketConnection/SocketConnectionFactory.java | 8 ++++---- .../impl/ServerSocketConnectionImpl.java | 15 ++++++++++----- 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/util/io/socketConnection/AbstractResponseHandler.java b/platform/platform-impl/src/com/intellij/util/io/socketConnection/AbstractResponseHandler.java index 81a63b3fc19e..42349e478bb3 100644 --- a/platform/platform-impl/src/com/intellij/util/io/socketConnection/AbstractResponseHandler.java +++ b/platform/platform-impl/src/com/intellij/util/io/socketConnection/AbstractResponseHandler.java @@ -15,9 +15,11 @@ */ package com.intellij.util.io.socketConnection; +import org.jetbrains.annotations.NotNull; + /** * @author nik */ -public abstract class AbstractResponseHandler { - public abstract void processResponse(R response); +public interface AbstractResponseHandler { + void processResponse(@NotNull R response); } diff --git a/platform/platform-impl/src/com/intellij/util/io/socketConnection/AbstractResponseToRequestHandler.java b/platform/platform-impl/src/com/intellij/util/io/socketConnection/AbstractResponseToRequestHandler.java index a247936ae975..d570186271c1 100644 --- a/platform/platform-impl/src/com/intellij/util/io/socketConnection/AbstractResponseToRequestHandler.java +++ b/platform/platform-impl/src/com/intellij/util/io/socketConnection/AbstractResponseToRequestHandler.java @@ -15,9 +15,14 @@ */ package com.intellij.util.io.socketConnection; +import org.jetbrains.annotations.NotNull; + /** * @author nik */ -public abstract class AbstractResponseToRequestHandler { - public abstract boolean processResponse(R response); +public interface AbstractResponseToRequestHandler { + /** + * @return true if no further responses to this request are expected, false if more responses are coming + */ + boolean processResponse(@NotNull R response); } diff --git a/platform/platform-impl/src/com/intellij/util/io/socketConnection/SocketConnectionFactory.java b/platform/platform-impl/src/com/intellij/util/io/socketConnection/SocketConnectionFactory.java index 957e0e8074da..435e168b27f2 100644 --- a/platform/platform-impl/src/com/intellij/util/io/socketConnection/SocketConnectionFactory.java +++ b/platform/platform-impl/src/com/intellij/util/io/socketConnection/SocketConnectionFactory.java @@ -29,14 +29,14 @@ public class SocketConnectionFactory { } public static - SocketConnection createServerConnection(int defaultPort, int attempts, RequestResponseExternalizerFactory factory) { - return new ServerSocketConnectionImpl<>(defaultPort, attempts, factory); + SocketConnection createServerConnection(int defaultPort, @Nullable InetAddress bindAddress, int attempts, RequestResponseExternalizerFactory factory) { + return new ServerSocketConnectionImpl<>(defaultPort, bindAddress, attempts, factory); } public static - SocketConnection createServerConnection(int defaultPort, RequestResponseExternalizerFactory factory) { - return new ServerSocketConnectionImpl<>(defaultPort, 1, factory); + SocketConnection createServerConnection(int defaultPort, @Nullable InetAddress bindAddress, RequestResponseExternalizerFactory factory) { + return new ServerSocketConnectionImpl<>(defaultPort, bindAddress, 1, factory); } public static diff --git a/platform/platform-impl/src/com/intellij/util/io/socketConnection/impl/ServerSocketConnectionImpl.java b/platform/platform-impl/src/com/intellij/util/io/socketConnection/impl/ServerSocketConnectionImpl.java index b28e71ab51fc..85d40ae085d4 100644 --- a/platform/platform-impl/src/com/intellij/util/io/socketConnection/impl/ServerSocketConnectionImpl.java +++ b/platform/platform-impl/src/com/intellij/util/io/socketConnection/impl/ServerSocketConnectionImpl.java @@ -8,8 +8,10 @@ import com.intellij.util.io.socketConnection.AbstractResponse; import com.intellij.util.io.socketConnection.ConnectionStatus; import com.intellij.util.io.socketConnection.RequestResponseExternalizerFactory; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.io.IOException; +import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; @@ -20,14 +22,17 @@ public class ServerSocketConnectionImpl factory) { super(factory); myDefaultPort = defaultPort; - myConnectionAttempts = connectionAttempts; + myPortChoiceAttempts = portChoiceAttempts; + myBindAddress = bindAddress; } @Override @@ -48,10 +53,10 @@ public class ServerSocketConnectionImpl