package se.sics.gvod.simulator.gradient; import se.sics.gvod.simulator.common.SimulatorPort; import java.io.IOException; import org.apache.log4j.PropertyConfigurator; import se.sics.gvod.config.AbstractConfiguration; import se.sics.gvod.config.VodConfig; import se.sics.gvod.config.CroupierConfiguration; import se.sics.gvod.config.GradientConfiguration; import se.sics.gvod.net.VodNetwork; import se.sics.gvod.network.model.king.KingLatencyMap; import se.sics.gvod.p2p.simulator.P2pSimulator; import se.sics.gvod.p2p.simulator.P2pSimulatorInit; import se.sics.gvod.config.ParentMakerConfiguration; import se.sics.gvod.timer.Timer; import se.sics.kompics.Component; import se.sics.kompics.ComponentDefinition; import se.sics.kompics.Kompics; import se.sics.kompics.p2p.experiment.dsl.SimulationScenario; import se.sics.kompics.simulation.SimulatorScheduler; public final class GradientSimulationMain extends ComponentDefinition { static { PropertyConfigurator.configureAndWatch("log4j.properties"); } private static SimulatorScheduler simulatorScheduler = new SimulatorScheduler(); private static SimulationScenario scenario = SimulationScenario.load(System.getProperty("scenario")); public static void main(String[] args) { Kompics.setScheduler(simulatorScheduler); Kompics.createAndStart(GradientSimulationMain.class, 1); } public GradientSimulationMain() throws IOException { P2pSimulator.setSimulationPortType(SimulatorPort.class); VodConfig.init(new String[]{}); // create Component p2pSimulator = create(P2pSimulator.class); Component gradientSimulator = create(GradientSimulator.class); final GradientConfiguration gradientConfiguration = (GradientConfiguration) GradientConfiguration.load(GradientConfiguration.class); final CroupierConfiguration croupierConfiguration = (CroupierConfiguration) CroupierConfiguration.load(CroupierConfiguration.class); final ParentMakerConfiguration parentMakerConfiguration = (ParentMakerConfiguration) AbstractConfiguration.load(ParentMakerConfiguration.class); trigger(new P2pSimulatorInit(simulatorScheduler, scenario, new KingLatencyMap(croupierConfiguration.getSeed())), p2pSimulator.getControl()); trigger(new GradientSimulatorInit(gradientConfiguration, croupierConfiguration, parentMakerConfiguration), gradientSimulator.getControl()); connect(gradientSimulator.getNegative(VodNetwork.class), p2pSimulator.getPositive(VodNetwork.class)); connect(gradientSimulator.getNegative(Timer.class), p2pSimulator.getPositive(Timer.class)); connect(gradientSimulator.getNegative(SimulatorPort.class), p2pSimulator.getPositive(SimulatorPort.class)); } }