View Javadoc

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  	// UT2004 SERVER SHARING
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  	// INITIALIZING
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  }