/.metadata/.plugins/org.eclipse.core.resources/.history/bd/30bb779367a3001e1d98c762f0e1eac2
#! | 60 lines | 51 code | 9 blank | 0 comment | 0 complexity | 62917580e5c45f21b4f3a39af4c9c9c0 MD5 | raw file
1package info.reflectionsofmind.connexion.test;
2
3import info.reflectionsofmind.connexion.platform.control.IRoot;
4import info.reflectionsofmind.connexion.platform.control.control.IConnectControl;
5import info.reflectionsofmind.connexion.platform.control.control.IGameControl;
6import info.reflectionsofmind.connexion.platform.control.control.IHostControl;
7import info.reflectionsofmind.connexion.platform.control.control.IJoinControl;
8import info.reflectionsofmind.connexion.platform.control.control.IMainControl;
9import info.reflectionsofmind.connexion.transport.direct.DirectConnectionParameters;
10import info.reflectionsofmind.connexion.transport.direct.DirectTransport;
11import info.reflectionsofmind.connexion.transport.direct.DirectTransportFactory;
12
13import java.util.concurrent.Callable;
14import java.util.concurrent.Executors;
15import java.util.concurrent.Future;
16
17public class EndToEnd
18{
19 public IHostControl startHost() throws Exception
20 {
21 final IRoot root = null;
22 final IMainControl main = root.restart();
23 final IHostControl host = main.hostGame(null);
24 host.launchTransport(new DirectTransportFactory(), //
25 new DirectConnectionParameters("direct:host"));
26 return host;
27 }
28
29 public IGameControl startJoin(final IHostControl host) throws Exception
30 {
31 final IRoot root = null;
32 final IMainControl main = root.restart();
33 final IConnectControl connect = main.joinGame(null);
34 final IJoinControl join = connect.connect("Dummy",
35 new DirectTransport("direct:join" + join.hashCode())
36 ((DirectTransport)host.getRunningTransports().get(0)).new DirectNode()).get();
37 return join.waitForGame().get();
38 }
39
40 public void endToEnd() throws Exception
41 {
42 final IHostControl host = startHost();
43
44 final Callable<IGameControl> callable = new Callable<IGameControl>()
45 {
46 public IGameControl call() throws Exception
47 {
48 return startJoin();
49 }
50 };
51
52 final Future<IGameControl> game1future = Executors.newSingleThreadExecutor().submit(callable);
53 final Future<IGameControl> game2future = Executors.newSingleThreadExecutor().submit(callable);
54
55 host.startGame();
56
57 final IGameControl game1 = game1future.get();
58 final IGameControl game2 = game2future.get();
59 }
60}