/.metadata/.plugins/org.eclipse.core.resources/.history/37/10efc42682a3001e1dff9ae635b3e1ee

https://bitbucket.org/fixpoint/connexion · #! · 87 lines · 75 code · 12 blank · 0 comment · 0 complexity · fa1fcc50af5034d16a6f68291a75943c MD5 · raw file

  1. package info.reflectionsofmind.connexion.platform.cli;
  2. import info.reflectionsofmind.connexion.platform.control.IRoot;
  3. import info.reflectionsofmind.connexion.platform.control.ServerInfo;
  4. import info.reflectionsofmind.connexion.platform.control.control.IConnectControl;
  5. import info.reflectionsofmind.connexion.platform.control.control.IJoinControl;
  6. import info.reflectionsofmind.connexion.platform.control.cts.CTSMessageCoder;
  7. import info.reflectionsofmind.connexion.platform.control.cts.message.MsgParticipationRequest;
  8. import info.reflectionsofmind.connexion.platform.control.stc.IServerToClientMessage;
  9. import info.reflectionsofmind.connexion.platform.control.util.ParticipationAcceptedWaiter;
  10. import info.reflectionsofmind.connexion.platform.game.IGame;
  11. import info.reflectionsofmind.connexion.transport.AbstractTransport;
  12. import info.reflectionsofmind.connexion.transport.ITransport;
  13. import info.reflectionsofmind.connexion.transport.ITransport.INode;
  14. import info.reflectionsofmind.connexion.util.convert.EncodingException;
  15. import java.util.concurrent.Future;
  16. public class ConnectInterpreter implements IConnectControl, IInterpreter
  17. {
  18. private final IGame game;
  19. private final IRoot root;
  20. public ConnectInterpreter(final IRoot root, final IGame game)
  21. {
  22. this.game = game;
  23. this.root = root;
  24. }
  25. public Future<IJoinControl> connect(final String name, final INode server)
  26. {
  27. try
  28. {
  29. server.getTransport().addListener(new ParticipationAcceptedWaiter()
  30. {
  31. @Override
  32. protected void onParticipationAccepted(final IServerToClientMessage message)
  33. {
  34. super.onParticipationAccepted(message);
  35. }
  36. });
  37. server.send(CTSMessageCoder.INSTANCE.encode(new MsgParticipationRequest(name)));
  38. }
  39. catch (final EncodingException exception)
  40. {
  41. exception.printStackTrace();
  42. }
  43. }
  44. public IGame getGame()
  45. {
  46. return this.game;
  47. }
  48. public IRoot getRoot()
  49. {
  50. return this.root;
  51. }
  52. public void interpret(final String command)
  53. {
  54. if (command.equals("connect"))
  55. {
  56. final ServerInfo info = this.root.getConfiguration().getServers().get(0);
  57. final ITransport transport = info.getFactory().createTransport(info.getParameters());
  58. final ITransport.IListener listener = new AbstractTransport.Listener()
  59. {
  60. @Override
  61. public void onTrace(final ITransport transport, final String trace)
  62. {
  63. System.out.println(trace);
  64. }
  65. };
  66. transport.addListener(listener);
  67. transport.start();
  68. connect("Player", transport.createNode(info.getAddress()));
  69. }
  70. else if ("exit".equals(command))
  71. {
  72. getRoot().restart();
  73. }
  74. }
  75. }