1 package cz.cuni.amis.pogamut.ut2004.agent.navigation.navmesh.drawing;
2
3 import java.util.logging.Level;
4 import java.util.logging.Logger;
5
6 import cz.cuni.amis.pogamut.base.agent.state.level2.IAgentStateRunning;
7 import cz.cuni.amis.pogamut.base.utils.logging.LogCategory;
8 import cz.cuni.amis.pogamut.ut2004.agent.params.UT2004AgentParameters;
9 import cz.cuni.amis.pogamut.ut2004.factory.guice.remoteagent.UT2004ServerFactory;
10 import cz.cuni.amis.pogamut.ut2004.factory.guice.remoteagent.UT2004ServerModule;
11 import cz.cuni.amis.pogamut.ut2004.server.impl.UT2004Server;
12 import cz.cuni.amis.pogamut.ut2004.utils.UT2004ServerRunner;
13
14 public class UT2004ServerProvider implements IUT2004ServerProvider {
15
16 protected Logger log;
17
18 protected UT2004Server server;
19
20 public UT2004ServerProvider() {
21 this(null);
22 }
23
24 public UT2004ServerProvider(Logger log) {
25 this.log = log;
26 if (this.log == null) {
27 this.log = new LogCategory("UT2004ServerProvider");
28 }
29 }
30
31
32
33
34
35 @Override
36 public UT2004Server getServer() {
37 if (server == null) init();
38 return server;
39 }
40
41 protected UT2004AgentParameters getDefaultServerParams() {
42 UT2004AgentParameters result = new UT2004AgentParameters();
43 return result;
44 }
45
46
47
48
49
50 public boolean isInited() {
51 return server != null && server.inState(IAgentStateRunning.class);
52 }
53
54 public void init() {
55 if (server != null && server.inState(IAgentStateRunning.class)) return;
56 init(getDefaultServerParams());
57 }
58
59 public void init(UT2004AgentParameters params) {
60 if (server != null && server.inState(IAgentStateRunning.class)) return;
61 initForced(params);
62 }
63
64 public void initForced() {
65 initForced(getDefaultServerParams());
66 }
67
68 public void initForced(UT2004AgentParameters params) {
69 log.warning("Initializing. Creating UT2004Server...");
70
71 killServer();
72
73 UT2004ServerModule module = new UT2004ServerModule<UT2004AgentParameters>();
74 UT2004ServerFactory factory = new UT2004ServerFactory(module);
75 UT2004ServerRunner runner = new UT2004ServerRunner(factory);
76 runner.setLogLevel(Level.SEVERE);
77 server = (UT2004Server) runner.startAgents(params).get(0);
78
79 log.warning("Initialized. New UT2004Server instance created.");
80 }
81
82 @Override
83 public void killServer() {
84 if (server == null) return;
85 log.warning("Killing old UT2004Server instance...");
86 try {
87 server.kill();
88 } catch (Exception e) {
89 }
90 server = null;
91 }
92
93
94
95 }