Ignore:
Timestamp:
07/16/13 23:31:35 (11 years ago)
Author:
psniegowski
Message:

HIGHLIGHTS:

for Joinables running

CHANGELOG:
Add WorkPackageLogic? and classes representing prime experiment state.

Add classes for PrimeExperiment? state.

Extract single netload routine in Simulator.

Working netload with dummy content in PrimeExperiment?.

More development with NetLoadSaveLogic? and PrimeExperiment?.

Improvement around prime.

Improve BufferedDispatcher?.isActive logic.

Add prime-all.xml configuration.

Manual connecting to existing simulators from GUI.

Guard in SimulatorConnector? against expdef mismatch.

Guard against empty target dispatcher in BufferedDispatcher?.

Make BufferedDispatcher? a Dispatcher (and Joinable).

Minor improvements.

Done StackedJoinable?, improve Experiment.

Develop StackedJoinable?.

Add StackedJoinable? utility joinables controller.

Add dependency on apache-commons-lang.

Add ready ListChange? on Simulators.

Improve hints in ListChange?.

Several improvements.

Found bug with dispatching in Experiment.

Minor improvements.

Fix bug with early finishing Server.

Many changes in Dispatching.

Fix bug with connection.

Do not obfuscate log with socket related exceptions.

Add SocketClosedException?.

Add SimulatorConnector?.

Work out conception of experiment composing of logics building blocks.

Rename SinkInterface? to Sink.

Move saving of Accesses into AccessOperations?.

Some improvements to Experiment.

Improve joinables.

Fix issue with joinables closing.

Add direct and managed consoles to popup menu.

File:
1 edited

Legend:

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

    r101 r102  
    22
    33import java.util.Map;
     4
     5import org.apache.logging.log4j.Level;
     6import org.apache.logging.log4j.Logger;
     7import org.apache.logging.log4j.LogManager;
    48
    59import com.framsticks.core.ListChange;
    610import com.framsticks.params.EventListener;
     11import com.framsticks.params.ParamFlags;
    712import com.framsticks.params.SimpleUniqueList;
    813import com.framsticks.params.annotations.AutoAppendAnnotation;
    914import com.framsticks.params.annotations.FramsClassAnnotation;
    1015import com.framsticks.params.annotations.ParamAnnotation;
     16import com.framsticks.params.types.ProcedureParam;
     17import com.framsticks.remote.RemoteTree;
     18import com.framsticks.util.FramsticksException;
     19import com.framsticks.util.dispatching.AbstractJoinable;
     20import com.framsticks.util.dispatching.BufferedDispatcher;
     21import com.framsticks.util.dispatching.Dispatcher;
     22import com.framsticks.util.dispatching.DispatcherSetable;
     23import com.framsticks.util.dispatching.Dispatching;
     24import com.framsticks.util.dispatching.ExceptionResultHandler;
     25import com.framsticks.util.dispatching.Joinable;
    1126import com.framsticks.util.dispatching.JoinableCollection;
     27import com.framsticks.util.dispatching.JoinableParent;
     28import com.framsticks.util.dispatching.JoinableState;
     29import com.framsticks.util.dispatching.RunAt;
    1230
    1331@FramsClassAnnotation
    14 public class Experiment extends JoinableCollection<Simulator> {
     32public class Experiment extends AbstractJoinable implements Dispatcher<Experiment>, DispatcherSetable<Experiment>, JoinableParent, ExceptionResultHandler {
     33        private static final Logger log = LogManager.getLogger(Experiment.class);
     34
     35        protected final JoinableCollection<Simulator> simulatorAsJoinables = new JoinableCollection<Simulator>().setObservableName("simulators");
     36
     37        protected final JoinableCollection<RemoteTree> simulatorCandidates = new JoinableCollection<RemoteTree>().setObservableName("candidates");
    1538
    1639        protected final SimpleUniqueList<Simulator> simulators = new SimpleUniqueList<>(Simulator.class, 's');
     40
     41        protected final SimpleUniqueList<Simulator> oldSimulators = new SimpleUniqueList<>(Simulator.class, 's');
     42
     43        protected final BufferedDispatcher<Experiment> bufferedDispatcher = new BufferedDispatcher<>(this);
     44
     45        protected String expdef;
     46
     47        /**
     48         *
     49         */
     50        public Experiment() {
     51                super();
     52                bufferedDispatcher.setBuffer(false);
     53
     54                Dispatching.dispatchLog(this, log, Level.DEBUG, "first task");
     55
     56
     57                simulators.addListener(new EventListener<ListChange>() {
     58                        @Override
     59                        public void action(ListChange argument) {
     60                                if (argument.getAction() == ListChange.Action.Add) {
     61                                        simulators.fireChildrenChange(argument, ListChange.Action.Modify, "ready");
     62                                }
     63                        }
     64                });
     65
     66        }
     67
     68        /**
     69         * @return the simulatorCandidates
     70         */
     71        public JoinableCollection<RemoteTree> getSimulatorCandidates() {
     72                return simulatorCandidates;
     73        }
    1774
    1875        @ParamAnnotation
     
    2178        }
    2279
     80        @ParamAnnotation(id = "old_simulators")
     81        public Map<String, Simulator> getOldSimulators() {
     82                return oldSimulators.getView();
     83        }
     84
     85        /**
     86         * @return the dispatcher
     87         */
     88        @Override
     89        public Dispatcher<Experiment> getDispatcher() {
     90                return bufferedDispatcher;
     91        }
     92
     93        /**
     94         * @param dispatcher the dispatcher to set
     95         */
     96        @Override
     97        public void setDispatcher(Dispatcher<Experiment> dispatcher) {
     98                bufferedDispatcher.setTargetDispatcher(dispatcher);
     99        }
     100
     101        /**
     102         * @return the expdef
     103         */
     104        @ParamAnnotation(flags = ParamFlags.USERREADONLY)
     105        public String getExpdef() {
     106                return expdef;
     107        }
     108
     109        /**
     110         * @param expdef the expdef to set
     111         */
     112        @ParamAnnotation
     113        public void setExpdef(String expdef) {
     114                this.expdef = expdef;
     115        }
     116
    23117        @ParamAnnotation(id = "simulators_changed")
    24118        public void addSimulatorsListener(EventListener<ListChange> listener) {
     
    34128        public void addSimulator(Simulator simulator) {
    35129                simulators.add(simulator);
    36         }
     130                simulatorAsJoinables.add(simulator);
     131
     132
     133
     134
     135
     136        }
     137
     138        protected void removeSimulator(Simulator simulator) {
     139                simulatorAsJoinables.remove(simulator);
     140                simulators.remove(simulator);
     141                oldSimulators.add(simulator);
     142        }
     143
     144        @ParamAnnotation(id = "old_simulators_changed")
     145        public void addOldSimulatorsListener(EventListener<ListChange> listener) {
     146                oldSimulators.addListener(listener);
     147        }
     148
     149        @ParamAnnotation(id = "old_simulators_changed")
     150        public void removeOldSimulatorsListener(EventListener<ListChange> listener) {
     151                oldSimulators.removeListener(listener);
     152        }
     153
     154        @Override
     155        public String getName() {
     156                return "experiment";
     157        }
     158
     159        @Override
     160        public void childChangedState(Joinable joinable, JoinableState state) {
     161                proceedToState(state);
     162        }
     163
     164        @Override
     165        protected void joinableStart() {
     166                bufferedDispatcher.createThreadIfNeeded();
     167                Dispatching.use(bufferedDispatcher, this);
     168
     169                Dispatching.use(simulatorAsJoinables, this);
     170                Dispatching.use(simulatorCandidates, this);
     171        }
     172
     173        @Override
     174        protected void joinableInterrupt() {
     175
     176                Dispatching.drop(simulatorAsJoinables, this);
     177                Dispatching.drop(simulatorCandidates, this);
     178
     179                finishJoinable();
     180        }
     181
     182        @Override
     183        protected void joinableFinish() {
     184                log.debug("finishing experiment {}", this);
     185        }
     186
     187        @Override
     188        protected void joinableJoin() throws InterruptedException {
     189                Dispatching.drop(bufferedDispatcher, this);
     190
     191                Dispatching.join(simulatorAsJoinables);
     192                Dispatching.join(simulatorCandidates);
     193                Dispatching.join(bufferedDispatcher.getTargetDispatcher());
     194        }
     195
     196        @Override
     197        public void handle(FramsticksException exception) {
     198                log.error("caught exception: ", exception);
     199        }
     200
     201        @Override
     202        public boolean isActive() {
     203                return bufferedDispatcher.isActive();
     204        }
     205
     206        @Override
     207        public void dispatch(RunAt<? extends Experiment> runnable) {
     208                bufferedDispatcher.dispatch(runnable);
     209        }
     210
     211        @ParamAnnotation(paramType = ProcedureParam.class)
     212        public void connectToSimulator(String address) {
     213                SimulatorConnector connector = new SimulatorConnector();
     214                connector.setAddress(address);
     215                connector.attachTo(this);
     216        }
     217
    37218}
Note: See TracChangeset for help on using the changeset viewer.