From 52088a08a9edb6d4b60e1e8923e1b3199db9f391 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kjetil=20=C3=98rbekk?= Date: Wed, 11 Jan 2012 10:47:27 +0100 Subject: Continue SameService implementation. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Implement ConnectionManager. - SameService now calls notifyParticipation() when a client tries to join. - Add client ids – this may or may not be a good idea. - Refactor App and Client code. --- jsonrpc/src/main/java/com/orbekk/rpc/App.java | 11 +++-- jsonrpc/src/main/java/com/orbekk/rpc/Client.java | 60 +++++++++++++++++------- 2 files changed, 51 insertions(+), 20 deletions(-) (limited to 'jsonrpc/src/main/java/com/orbekk/rpc') diff --git a/jsonrpc/src/main/java/com/orbekk/rpc/App.java b/jsonrpc/src/main/java/com/orbekk/rpc/App.java index 2f956fe..d92003e 100644 --- a/jsonrpc/src/main/java/com/orbekk/rpc/App.java +++ b/jsonrpc/src/main/java/com/orbekk/rpc/App.java @@ -1,6 +1,7 @@ package com.orbekk.rpc; import com.googlecode.jsonrpc4j.JsonRpcServer; +import com.orbekk.same.ConnectionManagerImpl; import com.orbekk.same.SameState; import com.orbekk.same.SameService; import com.orbekk.same.SameServiceImpl; @@ -8,14 +9,18 @@ import org.eclipse.jetty.server.Server; public class App { public static void main(String[] args) { - if (args.length < 2) { - System.err.println("Arguments: port networkName"); + if (args.length < 3) { + System.err.println("Arguments: port networkName clientId"); System.exit(1); } int port = Integer.parseInt(args[0]); String networkName = args[1]; + String clientId = args[2]; - SameState sameState = new SameState(networkName); + ConnectionManagerImpl connections = new ConnectionManagerImpl(); + + SameState sameState = new SameState(networkName, clientId, + connections); sameState.start(); SameServiceImpl service = new SameServiceImpl(sameState); diff --git a/jsonrpc/src/main/java/com/orbekk/rpc/Client.java b/jsonrpc/src/main/java/com/orbekk/rpc/Client.java index 99abf93..ea63fd7 100644 --- a/jsonrpc/src/main/java/com/orbekk/rpc/Client.java +++ b/jsonrpc/src/main/java/com/orbekk/rpc/Client.java @@ -1,32 +1,58 @@ package com.orbekk.rpc; +import com.googlecode.jsonrpc4j.JsonRpcServer; +import com.orbekk.same.ConnectionManagerImpl; +import com.orbekk.same.SameState; +import com.orbekk.same.SameService; +import com.orbekk.same.SameServiceImpl; import java.net.MalformedURLException; import java.net.URL; - -import com.orbekk.same.SameService; -import com.googlecode.jsonrpc4j.JsonRpcHttpClient; -import com.googlecode.jsonrpc4j.ProxyUtil; +import org.eclipse.jetty.server.Server; public class Client { public static void main(String[] args) { - if (args.length < 2) { - System.err.println("Arguments: networkAddress port"); + if (args.length < 4) { + System.err.println("Arguments: port clientId thisNetworkName " + + "remoteNetworkAddr"); System.exit(1); } - String networkAddress = args[0]; - int port = Integer.parseInt(args[1]); - JsonRpcHttpClient client = null; + int port = Integer.parseInt(args[0]); + String clientId = args[1]; + String networkName = args[2]; + String remoteAddr = args[3]; + + ConnectionManagerImpl connections = new ConnectionManagerImpl(); + + SameState sameState = new SameState(networkName, clientId, + connections); + sameState.start(); + + SameServiceImpl service = new SameServiceImpl(sameState); + JsonRpcServer jsonServer = new JsonRpcServer(service, + SameService.class); + + Server server = new Server(port); + RpcHandler rpcHandler = new RpcHandler(jsonServer, service); + server.setHandler(rpcHandler); + try { - client = new JsonRpcHttpClient(new URL(networkAddress)); - } catch (MalformedURLException e) { + server.start(); + } catch (Exception e) { + System.out.println("Could not start jetty server."); e.printStackTrace(); } - SameService service = ProxyUtil.createProxy( - client.getClass().getClassLoader(), - SameService.class, - client); - service.notifyNetwork("NoNetwork"); - service.participateNetwork("FirstNetwork", port); + + SameService remoteService = connections.getConnection(remoteAddr); + remoteService.notifyNetwork("NoNetwork"); + remoteService.participateNetwork("FirstNetwork", + sameState.getClientId(), "", port); + + try { + server.join(); + } catch (InterruptedException e) { + System.out.println("Interrupt"); + } + } } -- cgit v1.2.3