Ignore:
Timestamp:
09/23/13 18:54:07 (11 years ago)
Author:
psniegowski
Message:

HIGHLIGHTS:

  • add SimultorProviders? hierarchy
  • start Framsticks server over SSH
  • FJF compatible with Framsticks 4.0rc3
  • reading and writing of standard.expt
  • a proof-of-concept implementation of StandardExperiment?

CHANGELOG:
Optionally return FreeAccess? from registry.

Add SimulatorRange?.

StandardExperiment? with genotypes circulation.

Automate registration around StandardState?.

More improvements to StandardExperiment?.

Skeleton version of StandardExperiment?.

Test saving of StandardState?.

Standard experiment state is being loaded.

More development towards StandardState? reading.

Work on reading standard experiment state.

Add classes for standard experiment.

Update example standard.expt

Add FreeAccess? and FreeObject?.

Made compatible with version 4.0rc3

Change deserialization policy.

Improve SSH support.

Working running simulator over SSH.

Fix joining bug in Experiment.

Working version of SimulatorRunner?.

Add more SimulatorProviders?.

Working PrimeExperimentTest? with 4.0rc3

Add references to deserialization.

Add OpaqueObject? and it's serialization.

Add deserialization of dictionaries.

Partial implementation of deserialization.

Add more tests for deserialization.

Prepare tests for deserialization.

Add proper result to prime experiment test.

Minor fixes to simulators providers.

Draft version of SimulatorProvider?.

Add SimulatorProvider? interface.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • java/main/src/main/java/com/framsticks/experiment/SimulatorConnector.java

    r105 r107  
    77import com.framsticks.communication.Address;
    88import com.framsticks.params.annotations.FramsClassAnnotation;
    9 import com.framsticks.params.annotations.ParamAnnotation;
    109import com.framsticks.remote.RemoteTree;
    1110import com.framsticks.structure.Path;
    12 import com.framsticks.util.AutoAttacher;
    1311import com.framsticks.util.Misc;
    1412import com.framsticks.util.dispatching.Dispatcher;
    1513import com.framsticks.util.dispatching.Dispatching;
    1614import com.framsticks.util.dispatching.Future;
    17 import com.framsticks.util.lang.Casting;
    18 import com.framsticks.util.lang.Strings;
     15import com.framsticks.util.dispatching.FutureHandler;
     16import com.framsticks.util.dispatching.Joinable;
     17import com.framsticks.util.dispatching.JoinableParent;
     18import com.framsticks.util.dispatching.JoinableState;
    1919
    2020import static com.framsticks.structure.TreeOperations.*;
    2121
    2222@FramsClassAnnotation
    23 public class SimulatorConnector implements AutoAttacher {
     23public class SimulatorConnector extends SingleSimulatorProvider implements JoinableParent {
    2424        private static final Logger log = LogManager.getLogger(SimulatorConnector.class);
    2525
     26        protected Experiment experiment;
     27        protected RemoteTree remoteTree;
     28        protected Simulator simulator;
     29        protected Address address;
     30        protected boolean provided = false;
    2631
    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        }
    3070
    3171        @SuppressWarnings({ "rawtypes", "unchecked" })
    3272        @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();
    3580
    3681                Misc.throwIfNull(address);
     
    4186                remoteTree.setDispatcher((Dispatcher) experiment.getDispatcher());
    4287
    43 
    4488                experiment.getSimulatorCandidates().add(remoteTree);
     89                Dispatching.use(remoteTree, this);
    4590
    4691                Dispatching.dispatchLog(remoteTree, log, Level.DEBUG, "first task in remote tree");
     
    5196                        protected void result(Path result) {
    5297                                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);
    5499
    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);
    58103                        }
    59104                });
    60105        }
    61106
    62         @ParamAnnotation
    63         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);
    65110        }
    66 
    67         @ParamAnnotation
    68         public String getAddress() {
    69                 return Strings.toStringNullProof(address, "");
    70         }
    71 
    72         @Override
    73         public String toString() {
    74                 return "simulator connector to: " + Strings.toStringNullProof(address, "<null>");
    75         }
    76 
    77111}
Note: See TracChangeset for help on using the changeset viewer.