package simulator.interfaces;
import java.util.HashSet;
import java.util.Set;
import models.algebra.Expression;
import models.algebra.InvalidMessage;
import models.algebra.ParameterizedIdentifierIsFutureWork;
import models.algebra.UnificationFailed;
import models.algebra.ValueUndefined;
import models.dataConstraintModel.Channel;
import models.dataConstraintModel.ResourcePath;
import models.dataFlowModel.DataTransferChannel;
import models.dataFlowModel.ResolvingMultipleDefinitionIsFutureWork;
import simulator.Event;
import simulator.Resource;
import simulator.Simulator;
abstract public class NativeSender {
protected Simulator simulator;
protected DataTransferChannel channel;
protected ResourcePath resourcePath;
protected Resource resource;
public NativeSender(Simulator simulator, DataTransferChannel channel, ResourcePath resourcePath, Resource resource) {
this.simulator = simulator;
this.channel = channel;
this.resourcePath = resourcePath;
this.resource = resource;
}
public void sendToModel(Expression message) {
try {
Event event = new Event(channel, message, resourcePath, resource);
simulator.transition(event);
} catch (ParameterizedIdentifierIsFutureWork | ResolvingMultipleDefinitionIsFutureWork | InvalidMessage | UnificationFailed | ValueUndefined e) {
e.printStackTrace();
}
}
}