package com.limegroup.gnutella.rudp.messages; import org.limewire.util.PrivilegedAccessor; import com.limegroup.gnutella.MessageRouter; import com.limegroup.gnutella.messagehandlers.MessageHandler; import com.limegroup.gnutella.messages.Message; public class RUDPMessageHandlerHelper { public static Class[] getMessageClasses() { Class[] handledMessageClasses = new Class[] { LimeAckMessageImpl.class, LimeDataMessageImpl.class, LimeFinMessageImpl.class, LimeKeepAliveMessageImpl.class, LimeSynMessageImpl.class, }; return handledMessageClasses; } public static void setHandlers(MessageRouter messageRouter, MessageHandler ack, MessageHandler data, MessageHandler fin, MessageHandler keepAlive, MessageHandler syn) throws Exception { messageRouter.setUDPMessageHandler(LimeAckMessageImpl.class, ack); messageRouter.setUDPMessageHandler(LimeDataMessageImpl.class, data); messageRouter.setUDPMessageHandler(LimeFinMessageImpl.class, fin); messageRouter.setUDPMessageHandler(LimeKeepAliveMessageImpl.class, keepAlive); messageRouter.setUDPMessageHandler(LimeSynMessageImpl.class, syn); } public static void addHandler(MessageRouter messageRouter, MessageHandler handler) { messageRouter.addUDPMessageHandler(LimeAckMessageImpl.class, handler); messageRouter.addUDPMessageHandler(LimeDataMessageImpl.class, handler); messageRouter.addUDPMessageHandler(LimeFinMessageImpl.class, handler); messageRouter.addUDPMessageHandler(LimeKeepAliveMessageImpl.class, handler); messageRouter.addUDPMessageHandler(LimeSynMessageImpl.class, handler); } public static void setHandlerFields(MessageRouter messageRouter, Object object, String ack, String data, String fin, String keepAlive, String syn) throws Exception { set(messageRouter, object, ack, LimeAckMessageImpl.class); set(messageRouter, object, data, LimeDataMessageImpl.class); set(messageRouter, object, fin, LimeFinMessageImpl.class); set(messageRouter, object, keepAlive, LimeKeepAliveMessageImpl.class); set(messageRouter, object, syn, LimeSynMessageImpl.class); } private static void set(MessageRouter messageRouter, Object o, String field, Class<? extends Message> clazz) throws Exception { PrivilegedAccessor.setValue(o, field, messageRouter.getUDPMessageHandler(clazz)); } }