PageRenderTime 39ms CodeModel.GetById 23ms app.highlight 15ms RepoModel.GetById 0ms app.codeStats 0ms

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