/** * */ package com.limegroup.gnutella.messagehandlers; import java.net.InetSocketAddress; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.limegroup.gnutella.MessageRouter; import com.limegroup.gnutella.ReplyHandler; import com.limegroup.gnutella.messages.Message; import com.limegroup.gnutella.messages.PushRequest; /** * Handles push request on all networks by looking up the corresponding reply handler * and notifying it of the push request. */ public class AllNetworkPushRequestHandler implements MessageHandler { private static final Log LOG = LogFactory.getLog(AllNetworkPushRequestHandler.class); private final MessageRouter messageRouter; public AllNetworkPushRequestHandler(MessageRouter messageRouter) { this.messageRouter = messageRouter; } public void handleMessage(Message msg, InetSocketAddress addr, ReplyHandler handler) { PushRequest request = (PushRequest)msg; if (LOG.isDebugEnabled()) { LOG.debug("received push: " + request); } if (handler == null) { throw new NullPointerException("null ReplyHandler"); } // Note the use of getClientGUID() here, not getGUID() ReplyHandler replyHandler = messageRouter.getPushHandler(request.getClientGUID()); if(replyHandler != null) { replyHandler.handlePushRequest(request, handler); } else { if (LOG.isDebugEnabled()) { LOG.debug("no handler found for: " + request); } handler.countDroppedMessage(); } } }