/.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

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