package org.drools.grid.io.impl;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.drools.grid.io.Conversation;
import org.drools.grid.io.IoWriter;
import org.drools.grid.io.Message;
import org.drools.grid.io.MessageReceiverHandler;
public class RequestResponseDispatchListener
implements
MessageReceiverHandler {
// Need time based eviction queue, to remove old unreturned requests
private Map<Integer, MessageReceiverHandler> msgRecHandlers;
public RequestResponseDispatchListener() {
this.msgRecHandlers = new ConcurrentHashMap<Integer, MessageReceiverHandler>();
}
public void addMessageReceiverHandler(int requestId,
MessageReceiverHandler msgRecHandler) {
this.msgRecHandlers.put( requestId,
msgRecHandler );
}
public void messageReceived(Conversation conversation,
Message msg) {
MessageReceiverHandler msgRecHandler = this.msgRecHandlers.remove( msg.getResponseId() );
if ( msgRecHandler != null ) {
msgRecHandler.messageReceived( conversation,
msg );
}
}
}