package org.lucci.madhoc.simulation;

import java.util.Collection;

import org.lucci.madhoc.network.Connection;

public interface SimulationListener
{
    void iterationStarting(Simulation simulation);
    
    void iterationHasCompleted(Simulation simulation);

    void beforeTheStationsMove(MadhocSimulation simulation);

    void afterTheStationsMove(MadhocSimulation simulation);

    void beforeStationsDo(MadhocSimulation simulation);

    void afterStationsDo(MadhocSimulation simulation);

    void beforeDataTransfer(MadhocSimulation simulation);

    void afterDataTransfer(MadhocSimulation simulation);

    void beforeSensing(MadhocSimulation simulation);

    void afterSensing(MadhocSimulation simulation);

    void connectionsHaveVanished(MadhocSimulation simulation, Collection<Connection> removedConnections);

    void connectionsHaveAppeared(MadhocSimulation simulation, Collection<Connection> addedConnections);
}