package cz.agents.agentpolis.darptestbed.siminfrastructure.communication.dispatching.protocol;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import cz.agents.agentpolis.darptestbed.siminfrastructure.communication.dispatching.receiver.DispatchingReceiverVisitor;
import cz.agents.agentpolis.darptestbed.siminfrastructure.communication.requestconsumer.receiver.RequestConsumerReceiverVisitor;
import cz.agents.agentpolis.ondemandtransport.siminfrastructure.communication.protocol.AMessageProtocol;
import cz.agents.alite.common.event.EventProcessor;
import static com.google.common.base.Preconditions.checkNotNull;
@Singleton
public class DispatchingMessageProtocol {
public final AMessageProtocol<RequestConsumerReceiverVisitor> requestConsumerProtocol;
public final AMessageProtocol<DispatchingReceiverVisitor> driverDispatchingProtocol;
@Inject
public DispatchingMessageProtocol(EventProcessor eventProcessor) {
driverDispatchingProtocol = new AMessageProtocol<DispatchingReceiverVisitor>(eventProcessor) {};
requestConsumerProtocol = new AMessageProtocol<RequestConsumerReceiverVisitor>(eventProcessor) {};
}
public void addReceiverVisitor(String agentId, DispatchingMessageProtocolCombinedVisitor receiverVisitor) {
driverDispatchingProtocol.addReceiverVisitor(agentId, receiverVisitor);
requestConsumerProtocol.addReceiverVisitor(agentId, receiverVisitor);
}
}