- Timestamp:
- 09/23/13 18:54:07 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
java/main/src/main/java/com/framsticks/experiment/SimulatorConnector.java
r105 r107 7 7 import com.framsticks.communication.Address; 8 8 import com.framsticks.params.annotations.FramsClassAnnotation; 9 import com.framsticks.params.annotations.ParamAnnotation;10 9 import com.framsticks.remote.RemoteTree; 11 10 import com.framsticks.structure.Path; 12 import com.framsticks.util.AutoAttacher;13 11 import com.framsticks.util.Misc; 14 12 import com.framsticks.util.dispatching.Dispatcher; 15 13 import com.framsticks.util.dispatching.Dispatching; 16 14 import com.framsticks.util.dispatching.Future; 17 import com.framsticks.util.lang.Casting; 18 import com.framsticks.util.lang.Strings; 15 import com.framsticks.util.dispatching.FutureHandler; 16 import com.framsticks.util.dispatching.Joinable; 17 import com.framsticks.util.dispatching.JoinableParent; 18 import com.framsticks.util.dispatching.JoinableState; 19 19 20 20 import static com.framsticks.structure.TreeOperations.*; 21 21 22 22 @FramsClassAnnotation 23 public class SimulatorConnector implements AutoAttacher{23 public class SimulatorConnector extends SingleSimulatorProvider implements JoinableParent { 24 24 private static final Logger log = LogManager.getLogger(SimulatorConnector.class); 25 25 26 protected Experiment experiment; 27 protected RemoteTree remoteTree; 28 protected Simulator simulator; 29 protected Address address; 30 protected boolean provided = false; 26 31 27 protected Experiment experiment; 28 protected Address address; 29 protected RemoteTree remoteTree; 32 public boolean hasProvided() { 33 return provided; 34 } 35 36 public void setAddress(Address address) { 37 this.address = address; 38 } 39 40 public Address getAddress() { 41 return address; 42 } 43 44 45 @Override 46 public String getName() { 47 return "simulator connector"; 48 } 49 50 @Override 51 protected void joinableStart() { 52 53 } 54 55 @Override 56 protected void joinableInterrupt() { 57 Dispatching.drop(remoteTree, this); 58 finishJoinable(); 59 } 60 61 @Override 62 protected void joinableFinish() { 63 64 } 65 66 @Override 67 protected void joinableJoin() throws InterruptedException { 68 Dispatching.join(remoteTree); 69 } 30 70 31 71 @SuppressWarnings({ "rawtypes", "unchecked" }) 32 72 @Override 33 public void attachTo(Object parent) { 34 experiment = Casting.throwCast(Experiment.class, parent); 73 public void provideSimulator(final SimulatorSpecification specification, final FutureHandler<Simulator> future) { 74 if (hasProvided()) { 75 future.pass(null); 76 return; 77 } 78 provided = true; 79 experiment = specification.getExperiment(); 35 80 36 81 Misc.throwIfNull(address); … … 41 86 remoteTree.setDispatcher((Dispatcher) experiment.getDispatcher()); 42 87 43 44 88 experiment.getSimulatorCandidates().add(remoteTree); 89 Dispatching.use(remoteTree, this); 45 90 46 91 Dispatching.dispatchLog(remoteTree, log, Level.DEBUG, "first task in remote tree"); … … 51 96 protected void result(Path result) { 52 97 log.debug("resolved simulator path: {}", result); 53 Misc.checkEquals( experiment.getExpdef(), bindAccess(result).get("expdef", String.class), "expdef mismatch in connected simulator",this);98 Misc.checkEquals(specification.getDefinition(), bindAccess(result).get("expdef", String.class), "expdef mismatch in connected simulator", SimulatorConnector.this); 54 99 55 Simulator simulator = new Simulator(experiment,remoteTree, result);56 experiment.addSimulator(simulator); 57 experiment.getSimulatorCandidates().remove(remoteTree);100 simulator = experiment.createSimulator(remoteTree, result); 101 102 future.pass(simulator); 58 103 } 59 104 }); 60 105 } 61 106 62 @ ParamAnnotation63 public void setAddress(String address) {64 this.address = new Address(address);107 @Override 108 public void childChangedState(Joinable joinable, JoinableState state) { 109 log.debug("child {} changed state to {}", joinable, state); 65 110 } 66 67 @ParamAnnotation68 public String getAddress() {69 return Strings.toStringNullProof(address, "");70 }71 72 @Override73 public String toString() {74 return "simulator connector to: " + Strings.toStringNullProof(address, "<null>");75 }76 77 111 }
Note: See TracChangeset
for help on using the changeset viewer.