From ee986f93216e63460a6aaba1cb7d2f451401a23a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kjetil=20=C3=98rbekk?= Date: Tue, 17 Jan 2012 18:18:46 +0100 Subject: Add timeout to network operations. --- same/src/main/java/com/orbekk/same/ClientApp.java | 4 +++- .../main/java/com/orbekk/same/ConnectionManagerImpl.java | 14 ++++++++++++-- same/src/main/java/com/orbekk/same/MasterApp.java | 4 +++- 3 files changed, 18 insertions(+), 4 deletions(-) (limited to 'same/src/main/java/com/orbekk') diff --git a/same/src/main/java/com/orbekk/same/ClientApp.java b/same/src/main/java/com/orbekk/same/ClientApp.java index bf391dc..0effab4 100644 --- a/same/src/main/java/com/orbekk/same/ClientApp.java +++ b/same/src/main/java/com/orbekk/same/ClientApp.java @@ -10,11 +10,13 @@ import com.orbekk.net.HttpUtil; public class ClientApp { private Logger logger = LoggerFactory.getLogger(getClass()); private Server server; + private static final int timeout = 1000; public void run(int port, String networkName, String masterUrl) { logger.info("Starting client with port:{}, networkName:{}, masterUrl:{}", new Object[]{port, networkName, masterUrl}); - ConnectionManagerImpl connections = new ConnectionManagerImpl(); + ConnectionManagerImpl connections = new ConnectionManagerImpl(timeout, + timeout); State state = new State(networkName); Broadcaster broadcaster = BroadcasterImpl.getDefaultBroadcastRunner(connections); diff --git a/same/src/main/java/com/orbekk/same/ConnectionManagerImpl.java b/same/src/main/java/com/orbekk/same/ConnectionManagerImpl.java index 0a1e54f..f74bca7 100644 --- a/same/src/main/java/com/orbekk/same/ConnectionManagerImpl.java +++ b/same/src/main/java/com/orbekk/same/ConnectionManagerImpl.java @@ -8,16 +8,26 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ConnectionManagerImpl implements ConnectionManager { - + private int connectionTimeout; + private int readTimeout; + private Logger logger = LoggerFactory.getLogger(getClass()); - public ConnectionManagerImpl() { + /** + * @param connectionTimout Timeout for establishing connection in milliseconds. + * @param readTimeout Timeout for waiting for answer in milliseconds. + */ + public ConnectionManagerImpl(int connectionTimout, int readTimeout) { + this.connectionTimeout = connectionTimout; + this.readTimeout = readTimeout; } private T getClassProxy(String url, Class clazz) { T service = null; try { JsonRpcHttpClient client = new JsonRpcHttpClient(new URL(url)); + client.setConnectionTimeoutMillis(connectionTimeout); + client.setReadTimeoutMillis(readTimeout); service = ProxyUtil.createProxy( this.getClass().getClassLoader(), clazz, diff --git a/same/src/main/java/com/orbekk/same/MasterApp.java b/same/src/main/java/com/orbekk/same/MasterApp.java index 3e22563..1aff6fc 100644 --- a/same/src/main/java/com/orbekk/same/MasterApp.java +++ b/same/src/main/java/com/orbekk/same/MasterApp.java @@ -9,9 +9,11 @@ import com.googlecode.jsonrpc4j.JsonRpcServer; public class MasterApp { private Logger logger = LoggerFactory.getLogger(getClass()); private Server server; + private static final int timeout = 1000; public void run(int port) { - ConnectionManagerImpl connections = new ConnectionManagerImpl(); + ConnectionManagerImpl connections = new ConnectionManagerImpl(timeout, + timeout); State state = new State("MasterNetwork"); Broadcaster broadcaster = BroadcasterImpl.getDefaultBroadcastRunner(connections); -- cgit v1.2.3