mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
SocketConnectionFactory API improvements
@NotNull, specify bind address for server socket connection, convert classes to interfaces to enable Kotlin SAM conversions
This commit is contained in:
+4
-2
@@ -15,9 +15,11 @@
|
||||
*/
|
||||
package com.intellij.util.io.socketConnection;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public abstract class AbstractResponseHandler<R extends AbstractResponse> {
|
||||
public abstract void processResponse(R response);
|
||||
public interface AbstractResponseHandler<R extends AbstractResponse> {
|
||||
void processResponse(@NotNull R response);
|
||||
}
|
||||
|
||||
+7
-2
@@ -15,9 +15,14 @@
|
||||
*/
|
||||
package com.intellij.util.io.socketConnection;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public abstract class AbstractResponseToRequestHandler<R extends AbstractResponse> {
|
||||
public abstract boolean processResponse(R response);
|
||||
public interface AbstractResponseToRequestHandler<R extends AbstractResponse> {
|
||||
/**
|
||||
* @return true if no further responses to this request are expected, false if more responses are coming
|
||||
*/
|
||||
boolean processResponse(@NotNull R response);
|
||||
}
|
||||
|
||||
+4
-4
@@ -29,14 +29,14 @@ public class SocketConnectionFactory {
|
||||
}
|
||||
|
||||
public static <Request extends AbstractRequest, Response extends AbstractResponse>
|
||||
SocketConnection<Request, Response> createServerConnection(int defaultPort, int attempts, RequestResponseExternalizerFactory<Request, Response> factory) {
|
||||
return new ServerSocketConnectionImpl<>(defaultPort, attempts, factory);
|
||||
SocketConnection<Request, Response> createServerConnection(int defaultPort, @Nullable InetAddress bindAddress, int attempts, RequestResponseExternalizerFactory<Request, Response> factory) {
|
||||
return new ServerSocketConnectionImpl<>(defaultPort, bindAddress, attempts, factory);
|
||||
}
|
||||
|
||||
|
||||
public static <Request extends AbstractRequest, Response extends AbstractResponse>
|
||||
SocketConnection<Request, Response> createServerConnection(int defaultPort, RequestResponseExternalizerFactory<Request, Response> factory) {
|
||||
return new ServerSocketConnectionImpl<>(defaultPort, 1, factory);
|
||||
SocketConnection<Request, Response> createServerConnection(int defaultPort, @Nullable InetAddress bindAddress, RequestResponseExternalizerFactory<Request, Response> factory) {
|
||||
return new ServerSocketConnectionImpl<>(defaultPort, bindAddress, 1, factory);
|
||||
}
|
||||
|
||||
public static <Request extends AbstractRequest, Response extends AbstractResponse>
|
||||
|
||||
+10
-5
@@ -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<Request extends AbstractRequest, Respons
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.util.io.socketConnection.impl.ServerSocketConnectionImpl");
|
||||
private ServerSocket myServerSocket;
|
||||
private final int myDefaultPort;
|
||||
private final int myConnectionAttempts;
|
||||
private final int myPortChoiceAttempts;
|
||||
@Nullable private final InetAddress myBindAddress;
|
||||
|
||||
public ServerSocketConnectionImpl(int defaultPort,
|
||||
int connectionAttempts,
|
||||
@Nullable InetAddress bindAddress,
|
||||
int portChoiceAttempts,
|
||||
@NotNull RequestResponseExternalizerFactory<Request, Response> factory) {
|
||||
super(factory);
|
||||
myDefaultPort = defaultPort;
|
||||
myConnectionAttempts = connectionAttempts;
|
||||
myPortChoiceAttempts = portChoiceAttempts;
|
||||
myBindAddress = bindAddress;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -48,10 +53,10 @@ public class ServerSocketConnectionImpl<Request extends AbstractRequest, Respons
|
||||
@NotNull
|
||||
private ServerSocket createSocket() throws IOException {
|
||||
IOException exc = null;
|
||||
for (int i = 0; i < myConnectionAttempts; i++) {
|
||||
for (int i = 0; i < myPortChoiceAttempts; i++) {
|
||||
int port = myDefaultPort + i;
|
||||
try {
|
||||
return new ServerSocket(port);
|
||||
return new ServerSocket(port, 0, myBindAddress);
|
||||
}
|
||||
catch (IOException e) {
|
||||
exc = e;
|
||||
|
||||
Reference in New Issue
Block a user