All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.nadron.client.handlers.netty.EventObjectDecoder Maven / Gradle / Ivy

Go to download

This is a client library for Nadron server https://github.com/menacher/java-game-server/tree/netty4/nadron. Java clients can use this program to connect and interact with nadron server.

There is a newer version: 0.5
Show newest version
package io.nadron.client.handlers.netty;

import io.nadron.client.event.Events;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageDecoder;
import io.netty.handler.codec.serialization.ClassResolvers;
import io.netty.handler.codec.serialization.ObjectDecoder;

import java.util.List;

public class EventObjectDecoder extends MessageToMessageDecoder 
{

	@Override
	protected void decode(ChannelHandlerContext ctx, ByteBuf in,
			List out) throws Exception 
	{
		if(null != in)
		{
			byte opcode = in.readByte();
			if (opcode == Events.NETWORK_MESSAGE) 
			{
				opcode = Events.SESSION_MESSAGE;
			}
			ByteBuf data = Unpooled.buffer(in.readableBytes()).writeBytes(in);
			// TODO check if creating a new object is necessary each time
			Object obj = new SourceDecoder().decode(ctx, data);
			out.add(Events.event(obj, opcode));
		}
	}
	
	public static class SourceDecoder extends ObjectDecoder
	{
		public SourceDecoder() 
		{
			super(ClassResolvers.cacheDisabled(null));
		}
		
		@Override
		protected Object decode(ChannelHandlerContext ctx, ByteBuf in)
				throws Exception 
		{
			return super.decode(ctx, in);
		}
	}

}