Merge branch 'simple-netw-improve' of github.com:diesieben07/FML
This commit is contained in:
commit
1419a02d13
|
@ -1,8 +1,12 @@
|
|||
package cpw.mods.fml.common.network.simpleimpl;
|
||||
|
||||
import org.apache.logging.log4j.Level;
|
||||
|
||||
import net.minecraft.network.INetHandler;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.base.Throwables;
|
||||
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.network.FMLOutboundHandler;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry;
|
||||
|
@ -12,18 +16,18 @@ import io.netty.channel.ChannelHandlerContext;
|
|||
import io.netty.channel.SimpleChannelInboundHandler;
|
||||
|
||||
public class SimpleChannelHandlerWrapper<REQ extends IMessage, REPLY extends IMessage> extends SimpleChannelInboundHandler<REQ> {
|
||||
private IMessageHandler<REQ, REPLY> messageHandler;
|
||||
private Side side;
|
||||
public SimpleChannelHandlerWrapper(Class<? extends IMessageHandler<REQ, REPLY>> handler, Side side, Class<REQ> requestType)
|
||||
private final IMessageHandler<? super REQ, ? extends REPLY> messageHandler;
|
||||
private final Side side;
|
||||
|
||||
public SimpleChannelHandlerWrapper(Class<? extends IMessageHandler<? super REQ, ? extends REPLY>> handler, Side side, Class<REQ> requestType)
|
||||
{
|
||||
this(SimpleNetworkWrapper.instantiate(handler), side, requestType);
|
||||
}
|
||||
|
||||
public SimpleChannelHandlerWrapper(IMessageHandler<? super REQ, ? extends REPLY> handler, Side side, Class<REQ> requestType)
|
||||
{
|
||||
super(requestType);
|
||||
try
|
||||
{
|
||||
messageHandler = handler.newInstance();
|
||||
} catch (Exception e)
|
||||
{
|
||||
Throwables.propagate(e);
|
||||
}
|
||||
messageHandler = Preconditions.checkNotNull(handler, "IMessageHandler must not be null");
|
||||
this.side = side;
|
||||
}
|
||||
@Override
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
package cpw.mods.fml.common.network.simpleimpl;
|
||||
|
||||
import io.netty.channel.ChannelFutureListener;
|
||||
|
||||
import java.util.EnumMap;
|
||||
|
||||
import com.google.common.base.Throwables;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.network.INetHandler;
|
||||
import net.minecraft.network.Packet;
|
||||
|
@ -98,6 +102,31 @@ public class SimpleNetworkWrapper {
|
|||
* @param side the side for the handler
|
||||
*/
|
||||
public <REQ extends IMessage, REPLY extends IMessage> void registerMessage(Class<? extends IMessageHandler<REQ, REPLY>> messageHandler, Class<REQ> requestMessageType, int discriminator, Side side)
|
||||
{
|
||||
registerMessage(instantiate(messageHandler), requestMessageType, discriminator, side);
|
||||
}
|
||||
|
||||
static <REQ extends IMessage, REPLY extends IMessage> IMessageHandler<? super REQ, ? extends REPLY> instantiate(Class<? extends IMessageHandler<? super REQ, ? extends REPLY>> handler)
|
||||
{
|
||||
try
|
||||
{
|
||||
return handler.newInstance();
|
||||
} catch (Exception e)
|
||||
{
|
||||
throw Throwables.propagate(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a message and it's associated handler. The message will have the supplied discriminator byte. The message handler will
|
||||
* be registered on the supplied side (this is the side where you want the message to be processed and acted upon).
|
||||
*
|
||||
* @param messageHandler the message handler instance
|
||||
* @param requestMessageType the message type
|
||||
* @param discriminator a discriminator byte
|
||||
* @param side the side for the handler
|
||||
*/
|
||||
public <REQ extends IMessage, REPLY extends IMessage> void registerMessage(IMessageHandler<? super REQ, ? extends REPLY> messageHandler, Class<REQ> requestMessageType, int discriminator, Side side)
|
||||
{
|
||||
packetCodec.addDiscriminator(discriminator, requestMessageType);
|
||||
FMLEmbeddedChannel channel = channels.get(side);
|
||||
|
@ -112,19 +141,19 @@ public class SimpleNetworkWrapper {
|
|||
}
|
||||
}
|
||||
|
||||
private <REQ extends IMessage, REPLY extends IMessage, NH extends INetHandler> void addServerHandlerAfter(FMLEmbeddedChannel channel, String type, Class<? extends IMessageHandler<REQ, REPLY>> messageHandler, Class<REQ> requestType)
|
||||
private <REQ extends IMessage, REPLY extends IMessage, NH extends INetHandler> void addServerHandlerAfter(FMLEmbeddedChannel channel, String type, IMessageHandler<? super REQ, ? extends REPLY> messageHandler, Class<REQ> requestType)
|
||||
{
|
||||
SimpleChannelHandlerWrapper<REQ, REPLY> handler = getHandlerWrapper(messageHandler, Side.SERVER, requestType);
|
||||
channel.pipeline().addAfter(type, messageHandler.getName(), handler);
|
||||
channel.pipeline().addAfter(type, messageHandler.getClass().getName(), handler);
|
||||
}
|
||||
|
||||
private <REQ extends IMessage, REPLY extends IMessage, NH extends INetHandler> void addClientHandlerAfter(FMLEmbeddedChannel channel, String type, Class<? extends IMessageHandler<REQ, REPLY>> messageHandler, Class<REQ> requestType)
|
||||
private <REQ extends IMessage, REPLY extends IMessage, NH extends INetHandler> void addClientHandlerAfter(FMLEmbeddedChannel channel, String type, IMessageHandler<? super REQ, ? extends REPLY> messageHandler, Class<REQ> requestType)
|
||||
{
|
||||
SimpleChannelHandlerWrapper<REQ, REPLY> handler = getHandlerWrapper(messageHandler, Side.CLIENT, requestType);
|
||||
channel.pipeline().addAfter(type, messageHandler.getName(), handler);
|
||||
channel.pipeline().addAfter(type, messageHandler.getClass().getName(), handler);
|
||||
}
|
||||
|
||||
private <REPLY extends IMessage, REQ extends IMessage> SimpleChannelHandlerWrapper<REQ, REPLY> getHandlerWrapper(Class<? extends IMessageHandler<REQ, REPLY>> messageHandler, Side side, Class<REQ> requestType)
|
||||
private <REPLY extends IMessage, REQ extends IMessage> SimpleChannelHandlerWrapper<REQ, REPLY> getHandlerWrapper(IMessageHandler<? super REQ, ? extends REPLY> messageHandler, Side side, Class<REQ> requestType)
|
||||
{
|
||||
return new SimpleChannelHandlerWrapper<REQ, REPLY>(messageHandler, side, requestType);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue