1 package cz.cuni.amis.pogamut.udk.factory.guice.remoteagent;
2
3 import com.google.inject.AbstractModule;
4 import com.google.inject.Injector;
5 import com.google.inject.Provider;
6 import com.google.inject.name.Names;
7
8 import cz.cuni.amis.pogamut.base.agent.IAgent;
9 import cz.cuni.amis.pogamut.base.communication.connection.IWorldConnection;
10 import cz.cuni.amis.pogamut.base.communication.connection.impl.socket.ISocketConnectionAddress;
11 import cz.cuni.amis.pogamut.base.communication.connection.impl.socket.SocketConnection;
12 import cz.cuni.amis.pogamut.base.communication.messages.InfoMessage;
13 import cz.cuni.amis.pogamut.base.communication.parser.IWorldMessageParser;
14 import cz.cuni.amis.pogamut.base.communication.parser.impl.yylex.IYylex;
15 import cz.cuni.amis.pogamut.base.communication.parser.impl.yylex.IYylexObserver;
16 import cz.cuni.amis.pogamut.base.communication.translator.IWorldMessageTranslator;
17 import cz.cuni.amis.pogamut.base.communication.worldview.IWorldView;
18 import cz.cuni.amis.pogamut.base.component.controller.ComponentDependencies;
19 import cz.cuni.amis.pogamut.base.component.controller.ComponentDependencyType;
20 import cz.cuni.amis.pogamut.base.factory.guice.GuiceAgentModule;
21 import cz.cuni.amis.pogamut.base.factory.guice.GuiceRemoteAgentModule;
22 import cz.cuni.amis.pogamut.base.utils.guice.AdaptableProvider;
23 import cz.cuni.amis.pogamut.udk.agent.params.UDKAgentParameters;
24 import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.Yylex;
25 import cz.cuni.amis.pogamut.udk.communication.parser.IUDKYylex;
26 import cz.cuni.amis.pogamut.udk.communication.parser.UDKParser;
27 import cz.cuni.amis.pogamut.udk.communication.translator.itemdescriptor.ItemTranslator;
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 public class UDKCommunicationModule<PARAMS extends UDKAgentParameters> extends GuiceRemoteAgentModule<PARAMS>{
68
69 protected AdaptableProvider<ComponentDependencies> connectionDependenciesProvider = new AdaptableProvider<ComponentDependencies>(null);
70
71
72
73
74
75
76
77
78 @Override
79 public void prepareNewAgent(PARAMS agentParameters) {
80 super.prepareNewAgent(agentParameters);
81 connectionDependenciesProvider.set(new ComponentDependencies(ComponentDependencyType.STARTS_WITH).add(agentParameters.getAgentId()));
82 }
83
84 @Override
85 protected void configureModules() {
86 super.configureModules();
87 addModule(new AbstractModule() {
88
89 @Override
90 public void configure() {
91 bind(IWorldConnection.class).to(SocketConnection.class);
92 bind(ComponentDependencies.class).annotatedWith(Names.named(SocketConnection.CONNECTION_DEPENDENCY)).toProvider(connectionDependenciesProvider);
93 bind(ISocketConnectionAddress.class).annotatedWith(Names.named(SocketConnection.CONNECTION_ADDRESS_DEPENDENCY)).toProvider((Provider<ISocketConnectionAddress>) getAddressProvider());
94 bind(IWorldMessageParser.class).to(UDKParser.class);
95 bind(IYylex.class).to(IUDKYylex.class);
96 bind(IUDKYylex.class).to(Yylex.class);
97 bind(IYylexObserver.class).to(IYylexObserver.LogObserver.class);
98 bind(UDKAgentParameters.class).toProvider(getAgentParamsProvider());
99 }
100
101 });
102 }
103
104 }