package cz.agents.agentpolis.darptestbed.simmodel.agent.dispatching;
import com.google.inject.Injector;
import cz.agents.agentpolis.darptestbed.siminfrastructure.communication.protocol.GeneralMessageProtocol;
import cz.agents.agentpolis.darptestbed.siminfrastructure.communication.requestconsumer.protocol.RequestConsumerMessageProtocol;
import cz.agents.agentpolis.darptestbed.simmodel.agent.TestbedEntityType;
import cz.agents.agentpolis.darptestbed.simmodel.agent.dispatching.logic.DispatchingLogic;
import cz.agents.agentpolis.darptestbed.siminfrastructure.communication.dispatching.protocol.DispatchingMessageProtocol;
import cz.agents.agentpolis.simmodel.agent.Agent;
/**
* The factory for creating a new dispatching instance
*
* @author Lukas Canda
*/
public class DispatchingAgentFactory {
public Agent createAgent(String dispatchingId, DispatchingLogic logic, Injector injector) {
DispatchingAgent dispatchingAgent = new DispatchingAgent(dispatchingId, TestbedEntityType.DISPATCHING, logic);
injector.getInstance(RequestConsumerMessageProtocol.class).addReceiverVisitor(dispatchingId, dispatchingAgent);
injector.getInstance(DispatchingMessageProtocol.class).addReceiverVisitor(dispatchingId, dispatchingAgent);
injector.getInstance(GeneralMessageProtocol.class).addReceiverVisitor(dispatchingId, dispatchingAgent);
return dispatchingAgent;
}
}