source: java/main/src/main/java/com/framsticks/experiment/SimulatorRunner.java @ 193

Last change on this file since 193 was 193, checked in by Maciej Komosinski, 10 years ago

Set svn:eol-style native for all textual files

  • Property svn:eol-style set to native
File size: 2.2 KB
Line 
1package com.framsticks.experiment;
2
3import org.apache.logging.log4j.Logger;
4import org.apache.logging.log4j.LogManager;
5
6import com.framsticks.communication.Address;
7import com.framsticks.params.annotations.FramsClassAnnotation;
8import com.framsticks.running.FramsServer;
9import com.framsticks.util.dispatching.Dispatching;
10import com.framsticks.util.dispatching.FutureHandler;
11import com.framsticks.util.dispatching.Joinable;
12import com.framsticks.util.dispatching.JoinableParent;
13import com.framsticks.util.dispatching.JoinableState;
14
15@FramsClassAnnotation
16public class SimulatorRunner extends SingleSimulatorProvider implements JoinableParent {
17
18        private static final Logger log = LogManager.getLogger(SimulatorRunner.class);
19
20        protected final SimulatorConnector connector;
21        protected final FramsServer server;
22
23        /**
24         *
25         */
26        public SimulatorRunner() {
27                connector = new SimulatorConnector();
28                server = new FramsServer();
29        }
30
31        @Override
32        public String getName() {
33                return "simulator runner";
34        }
35
36        @Override
37        public void provideSimulator(SimulatorSpecification specification, FutureHandler<Simulator> future) {
38                if (connector.hasProvided()) {
39                        future.pass(null);
40                        return;
41                }
42                log.debug("running simulator at {}", getAddress());
43
44                if (!getAddress().getHostName().equals("localhost")) {
45                        server.setHost(getAddress().getHostName());
46                }
47
48                server.setPort(getAddress().getPort());
49                server.setExpdef(specification.getDefinition());
50
51                Dispatching.use(server, this);
52
53                Dispatching.use(connector, this);
54                connector.provideSimulator(specification, future);
55        }
56
57        @Override
58        public void childChangedState(Joinable joinable, JoinableState state) {
59                proceedToState(state);
60        }
61
62        @Override
63        protected void joinableStart() {
64        }
65
66        @Override
67        protected void joinableInterrupt() {
68                finishJoinable();
69        }
70
71        @Override
72        protected void joinableFinish() {
73                Dispatching.drop(connector, this);
74                Dispatching.drop(server, this);
75        }
76
77        @Override
78        protected void joinableJoin() throws InterruptedException {
79                Dispatching.join(connector);
80                Dispatching.join(server);
81        }
82
83        @Override
84        public Address getAddress() {
85                return connector.getAddress();
86        }
87
88        @Override
89        public void setAddress(Address address) {
90                connector.setAddress(address);
91        }
92}
Note: See TracBrowser for help on using the repository browser.