package com.limegroup.gnutella.rudp.messages; import java.net.InetSocketAddress; import org.limewire.i18n.I18nMarker; import org.limewire.inject.EagerSingleton; import org.limewire.lifecycle.Service; import org.limewire.lifecycle.ServiceRegistry; import org.limewire.rudp.UDPMultiplexor; import org.limewire.rudp.messages.RUDPMessage; import com.google.inject.Inject; import com.google.inject.Provider; import com.limegroup.gnutella.MessageRouter; import com.limegroup.gnutella.ReplyHandler; import com.limegroup.gnutella.messagehandlers.MessageHandler; import com.limegroup.gnutella.messages.Message; @EagerSingleton class LimeRUDPMessageHandler implements MessageHandler, Service { private final Provider<UDPMultiplexor> plexor; private final Provider<MessageRouter> router; @Inject LimeRUDPMessageHandler(Provider<UDPMultiplexor> plexor, Provider<MessageRouter> router) { this.plexor = plexor; this.router = router; } @Inject void register(ServiceRegistry registry) { registry.register(this); } /** Installs this handler on the given router. */ public void initialize() { plexor.get(); router.get().setUDPMessageHandler(LimeAckMessageImpl.class, this); router.get().setUDPMessageHandler(LimeDataMessageImpl.class, this); router.get().setUDPMessageHandler(LimeFinMessageImpl.class, this); router.get().setUDPMessageHandler(LimeKeepAliveMessageImpl.class, this); router.get().setUDPMessageHandler(LimeSynMessageImpl.class, this); } public void handleMessage(Message msg, InetSocketAddress addr, ReplyHandler handler) { plexor.get().routeMessage((RUDPMessage)msg, addr); } public void start() {} public void stop() {} public String getServiceName() { return I18nMarker.marktr("RUDP Message Routing"); } }