PageRenderTime 24ms CodeModel.GetById 8ms app.highlight 14ms RepoModel.GetById 1ms app.codeStats 0ms

/.metadata/.plugins/org.eclipse.core.resources/.history/bd/30bb779367a3001e1d98c762f0e1eac2

https://bitbucket.org/fixpoint/connexion
#! | 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}