/.metadata/.plugins/org.eclipse.core.resources/.history/51/0024724e83a3001e1dff9ae635b3e1ee
#! | 91 lines | 79 code | 12 blank | 0 comment | 0 complexity | 542aec8406fb2acb373282a0f28b92a5 MD5 | raw file
- package info.reflectionsofmind.connexion.platform.cli;
-
- import info.reflectionsofmind.connexion.platform.control.IRoot;
- import info.reflectionsofmind.connexion.platform.control.ServerInfo;
- import info.reflectionsofmind.connexion.platform.control.control.IConnectControl;
- import info.reflectionsofmind.connexion.platform.control.control.IJoinControl;
- import info.reflectionsofmind.connexion.platform.control.cts.CTSMessageCoder;
- import info.reflectionsofmind.connexion.platform.control.cts.message.MsgParticipationRequest;
- import info.reflectionsofmind.connexion.platform.control.stc.message.MsgParticipationAccepted;
- import info.reflectionsofmind.connexion.platform.control.util.ParticipationAcceptedWaiter;
- import info.reflectionsofmind.connexion.platform.game.IGame;
- import info.reflectionsofmind.connexion.transport.AbstractTransport;
- import info.reflectionsofmind.connexion.transport.ITransport;
- import info.reflectionsofmind.connexion.transport.ITransport.INode;
- import info.reflectionsofmind.connexion.util.convert.EncodingException;
-
- import java.util.concurrent.Callable;
- import java.util.concurrent.Executors;
- import java.util.concurrent.Future;
-
- public class ConnectInterpreter implements IConnectControl, IInterpreter
- {
- private final IGame game;
- private final IRoot root;
-
- public ConnectInterpreter(final IRoot root, final IGame game)
- {
- this.game = game;
- this.root = root;
- }
-
- public Future<IJoinControl> connect(final String name, final INode server)
- {
- try
- {
- final ParticipationAcceptedWaiter waiter = new ParticipationAcceptedWaiter();
- server.getTransport().addListener(waiter);
- server.send(CTSMessageCoder.INSTANCE.encode(new MsgParticipationRequest(name)));
- final Future<MsgParticipationAccepted> message = waiter.get();
-
- return Executors.newSingleThreadExecutor().submit(new Callable<IJoinControl>()
- {
- public IJoinControl call() throws Exception
- {
- return new JoinInterpreter(getRoot(), getGame(), message.get().getNames());
- }
- });
- }
- catch (final EncodingException exception)
- {
- exception.printStackTrace();
- }
- }
-
- public IGame getGame()
- {
- return this.game;
- }
-
- public IRoot getRoot()
- {
- return this.root;
- }
-
- public void interpret(final String command)
- {
- if (command.equals("connect"))
- {
- final ServerInfo info = this.root.getConfiguration().getServers().get(0);
- final ITransport transport = info.getFactory().createTransport(info.getParameters());
-
- final ITransport.IListener listener = new AbstractTransport.Listener()
- {
- @Override
- public void onTrace(final ITransport transport, final String trace)
- {
- System.out.println(trace);
- }
- };
-
- transport.addListener(listener);
- transport.start();
-
- connect("Player", transport.createNode(info.getAddress()));
- }
- else if ("exit".equals(command))
- {
- getRoot().restart();
- }
- }
- }