diff --git a/example-games/src/test/java/org/menacheri/zombie/ZombieClient.java b/example-games/src/test/java/org/menacheri/zombie/ZombieClient.java index a664bd8e..25a7228d 100644 --- a/example-games/src/test/java/org/menacheri/zombie/ZombieClient.java +++ b/example-games/src/test/java/org/menacheri/zombie/ZombieClient.java @@ -81,11 +81,13 @@ public void operationComplete(ChannelFuture future) throws Exception public static ChannelBuffer getLoginBuffer(String refKey, ChannelBuffer udpAddress) { ChannelBuffer opCode = ChannelBuffers.buffer(1); + ChannelBuffer protocol = ChannelBuffers.buffer(1); opCode.writeByte(Events.LOG_IN); + protocol.writeByte(Events.PROTCOL_VERSION); String username = "user"; String password = "pass"; // write username,password and ref key. - ChannelBuffer buffer = ChannelBuffers.wrappedBuffer(opCode, + ChannelBuffer buffer = ChannelBuffers.wrappedBuffer(opCode,protocol, NettyUtils.writeStrings(username,password,refKey),udpAddress); return buffer; } diff --git a/jetclient/src/main/java/org/menacheri/jetclient/event/Events.java b/jetclient/src/main/java/org/menacheri/jetclient/event/Events.java index 8240c65a..8ee96abb 100644 --- a/jetclient/src/main/java/org/menacheri/jetclient/event/Events.java +++ b/jetclient/src/main/java/org/menacheri/jetclient/event/Events.java @@ -17,6 +17,11 @@ */ public class Events { + /** + * The protocol version. This will be sent along with the login message so + * that appropriate login handlers can be set in the pipeline. + */ + public static final byte PROTOCOL_VERSION = 0X01; /** * Events should NEVER have this type. But event handlers can choose * to have this type to signify that they will handle any type of incoming diff --git a/jetclient/src/main/java/org/menacheri/jetclient/handlers/netty/MessageBufferEventEncoder.java b/jetclient/src/main/java/org/menacheri/jetclient/handlers/netty/MessageBufferEventEncoder.java index bbe78be8..3fc7ce0d 100644 --- a/jetclient/src/main/java/org/menacheri/jetclient/handlers/netty/MessageBufferEventEncoder.java +++ b/jetclient/src/main/java/org/menacheri/jetclient/handlers/netty/MessageBufferEventEncoder.java @@ -1,52 +1,61 @@ -package org.menacheri.jetclient.handlers.netty; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandler.Sharable; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; -import org.menacheri.jetclient.communication.MessageBuffer; -import org.menacheri.jetclient.event.Event; - -/** - * Converts an incoming {@link Event} which in turn has a - * IMessageBuffer payload to a Netty {@link ChannelBuffer}. - * Note that {@link Event} instances containing other type of objects as its - * payload will result in {@link ClassCastException}. - * - * @author Abraham Menacherry. - * - */ -@Sharable -public class MessageBufferEventEncoder extends OneToOneEncoder -{ - - @Override - protected Object encode(ChannelHandlerContext ctx, Channel channel, - Object msg) throws Exception - { - if (null == msg) - { - return msg; - } - Event event = (Event) msg; - ChannelBuffer opCode = ChannelBuffers.buffer(1); - opCode.writeByte(event.getType()); - ChannelBuffer buffer = null; - if (null != event.getSource()) - { - @SuppressWarnings("unchecked") - MessageBuffer msgBuffer = (MessageBuffer) event - .getSource(); - ChannelBuffer data = msgBuffer.getNativeBuffer(); - buffer = ChannelBuffers.wrappedBuffer(opCode, data); - } - else - { - buffer = opCode; - } - return buffer; - } - -} +package org.menacheri.jetclient.handlers.netty; + +import org.jboss.netty.buffer.ChannelBuffer; +import org.jboss.netty.buffer.ChannelBuffers; +import org.jboss.netty.channel.Channel; +import org.jboss.netty.channel.ChannelHandler.Sharable; +import org.jboss.netty.channel.ChannelHandlerContext; +import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; +import org.menacheri.jetclient.communication.MessageBuffer; +import org.menacheri.jetclient.event.Event; +import org.menacheri.jetclient.event.Events; + +/** + * Converts an incoming {@link Event} which in turn has a + * IMessageBuffer payload to a Netty {@link ChannelBuffer}. + * Note that {@link Event} instances containing other type of objects as its + * payload will result in {@link ClassCastException}. + * + * @author Abraham Menacherry. + * + */ +@Sharable +public class MessageBufferEventEncoder extends OneToOneEncoder +{ + + @Override + protected Object encode(ChannelHandlerContext ctx, Channel channel, + Object msg) throws Exception + { + if (null == msg) + { + return msg; + } + Event event = (Event) msg; + ChannelBuffer opCode = ChannelBuffers.buffer(1); + opCode.writeByte(event.getType()); + if (Events.LOG_IN == event.getType()) + { + // write protocol version also + ChannelBuffer protocolVersion = ChannelBuffers.buffer(1); + protocolVersion.writeByte(Events.PROTOCOL_VERSION); + opCode = ChannelBuffers.wrappedBuffer(opCode, protocolVersion); + } + + ChannelBuffer buffer = null; + if (null != event.getSource()) + { + @SuppressWarnings("unchecked") + MessageBuffer msgBuffer = (MessageBuffer) event + .getSource(); + ChannelBuffer data = msgBuffer.getNativeBuffer(); + buffer = ChannelBuffers.wrappedBuffer(opCode, data); + } + else + { + buffer = opCode; + } + return buffer; + } + +} diff --git a/jetserver/.classpath b/jetserver/.classpath index efaf8892..c0fecbd4 100644 --- a/jetserver/.classpath +++ b/jetserver/.classpath @@ -1,58 +1,58 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jetserver/.project b/jetserver/.project index 762c42f3..02f74527 100644 --- a/jetserver/.project +++ b/jetserver/.project @@ -1,16 +1,16 @@ - - jetserver - Jetserver is a high speed socket based java game server written using JBoss Netty and Mike Rettig's Jetlang.It is specifically tuned for network based multiplayer games and supports TCP and UDP network protocols. NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse. - - - - org.eclipse.ajdt.core.ajbuilder - - - - org.eclipse.ajdt.ui.ajnature - org.eclipse.jdt.core.javanature - org.springframework.ide.eclipse.core.springnature - org.eclipse.wst.common.project.facet.core.nature - + + jetserver + Jetserver is a high speed socket based java game server written using JBoss Netty and Mike Rettig's Jetlang.It is specifically tuned for network based multiplayer games and supports TCP and UDP network protocols. NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse. + + + + org.eclipse.ajdt.core.ajbuilder + + + + org.eclipse.ajdt.ui.ajnature + org.eclipse.jdt.core.javanature + org.springframework.ide.eclipse.core.springnature + org.eclipse.wst.common.project.facet.core.nature + \ No newline at end of file diff --git a/jetserver/pom.xml b/jetserver/pom.xml index 8ad7942d..6c281c66 100644 --- a/jetserver/pom.xml +++ b/jetserver/pom.xml @@ -1,227 +1,227 @@ - - 4.0.0 - org.menacheri - jetserver - jar - 0.1 - jetserver - https://github.com/menacher/java-game-server/tree/master/jetserver - Jetserver is a high speed socket based java game server written using JBoss Netty and Mike Rettig's Jetlang.It is specifically tuned for network based multiplayer games and supports TCP and UDP network protocols. - - - - GNU Lesser General Public License (LGPL), Version 2.1 - http://www.gnu.org/licenses/lgpl-2.1.txt - repo - - - - - - - UTF-8 - 3.1.0.RELEASE - - - - - junit - junit - 4.8.2 - test - - - - org.slf4j - slf4j-log4j12 - 1.6.1 - test - - - - - org.springframework - spring-core - ${org.springframework.version} - - - - - org.springframework - spring-expression - ${org.springframework.version} - - - - - - org.springframework - spring-beans - ${org.springframework.version} - - - - - org.springframework - spring-context - ${org.springframework.version} - - - - org.springframework - spring-asm - ${org.springframework.version} - - - - cglib - cglib-nodep - 2.1_3 - - - - org.slf4j - slf4j-api - 1.6.1 - - - - org.jetlang - jetlang - 0.2.9 - - - - io.netty - netty - 3.3.1.Final - - - - - com.adobe.blazeds - blazeds-core - 3.2.0.3978 - - - - com.adobe.blazeds - blazeds-common - 3.2.0.3978 - - - - org.aspectj - aspectjrt - 1.6.1 - compile - - - - - - - - - org.apache.maven.plugins - maven-source-plugin - 2.1.2 - - - attach-sources - verify - - jar-no-fork - - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.8.1 - - - attach-javadoc - verify - - jar - - - - - private - true - - - - - - org.apache.maven.plugins - maven-eclipse-plugin - 2.8 - - 1.6 - - org.eclipse.ajdt.ui.ajnature - org.springframework.ide.eclipse.core.springnature - org.eclipse.wst.common.project.facet.core.nature - - - - **/*.aj - - - true - true - - - - - org.codehaus.mojo - aspectj-maven-plugin - 1.4 - - - org.aspectj - aspectjrt - 1.6.1 - - - org.aspectj - aspectjtools - 1.6.1 - - - - 1.6 - 1.6 - true - true - 1.6 - - - - - compile - test-compile - - - - - - - - - - + + 4.0.0 + org.menacheri + jetserver + jar + 0.1 + jetserver + https://github.com/menacher/java-game-server/tree/master/jetserver + Jetserver is a high speed socket based java game server written using JBoss Netty and Mike Rettig's Jetlang.It is specifically tuned for network based multiplayer games and supports TCP and UDP network protocols. + + + + GNU Lesser General Public License (LGPL), Version 2.1 + http://www.gnu.org/licenses/lgpl-2.1.txt + repo + + + + + + + UTF-8 + 3.1.0.RELEASE + + + + + junit + junit + 4.8.2 + test + + + + org.slf4j + slf4j-log4j12 + 1.6.1 + test + + + + + org.springframework + spring-core + ${org.springframework.version} + + + + + org.springframework + spring-expression + ${org.springframework.version} + + + + + + org.springframework + spring-beans + ${org.springframework.version} + + + + + org.springframework + spring-context + ${org.springframework.version} + + + + org.springframework + spring-asm + ${org.springframework.version} + + + + cglib + cglib-nodep + 2.1_3 + + + + org.slf4j + slf4j-api + 1.6.1 + + + + org.jetlang + jetlang + 0.2.9 + + + + io.netty + netty + 3.5.11.Final + + + + + com.adobe.blazeds + blazeds-core + 3.2.0.3978 + + + + com.adobe.blazeds + blazeds-common + 3.2.0.3978 + + + + org.aspectj + aspectjrt + 1.6.1 + compile + + + + + + + + + org.apache.maven.plugins + maven-source-plugin + 2.1.2 + + + attach-sources + verify + + jar-no-fork + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.8.1 + + + attach-javadoc + verify + + jar + + + + + private + true + + + + + + org.apache.maven.plugins + maven-eclipse-plugin + 2.8 + + 1.6 + + org.eclipse.ajdt.ui.ajnature + org.springframework.ide.eclipse.core.springnature + org.eclipse.wst.common.project.facet.core.nature + + + + **/*.aj + + + true + true + + + + + org.codehaus.mojo + aspectj-maven-plugin + 1.4 + + + org.aspectj + aspectjrt + 1.6.1 + + + org.aspectj + aspectjtools + 1.6.1 + + + + 1.6 + 1.6 + true + true + 1.6 + + + + + compile + test-compile + + + + + + + + + + diff --git a/jetserver/src/main/java/org/menacheri/jetserver/event/Events.java b/jetserver/src/main/java/org/menacheri/jetserver/event/Events.java index 1b16d418..cc7a7fab 100644 --- a/jetserver/src/main/java/org/menacheri/jetserver/event/Events.java +++ b/jetserver/src/main/java/org/menacheri/jetserver/event/Events.java @@ -1,152 +1,153 @@ -package org.menacheri.jetserver.event; - -import org.menacheri.jetserver.app.Session; -import org.menacheri.jetserver.communication.DeliveryGuaranty; -import org.menacheri.jetserver.communication.MessageSender; -import org.menacheri.jetserver.communication.DeliveryGuaranty.DeliveryGuarantyOptions; -import org.menacheri.jetserver.event.impl.DefaultSessionEventHandler; -import org.menacheri.jetserver.event.impl.ChangeAttributeEvent; -import org.menacheri.jetserver.event.impl.ConnectEvent; -import org.menacheri.jetserver.event.impl.DefaultEvent; -import org.menacheri.jetserver.event.impl.DefaultEventContext; -import org.menacheri.jetserver.event.impl.DefaultNetworkEvent; - - -public class Events -{ - /** - * Events should NEVER have this type. But event handlers can choose - * to have this type to signify that they will handle any type of incoming - * event. For e.g. {@link DefaultSessionEventHandler} - */ - public final static byte ANY = 0x00; - // Lifecycle events. - public final static byte CONNECT = 0x02; - public final static byte CONNECT_FAILED = 0x06; - public static final byte LOG_IN = 0x08; - public static final byte LOG_OUT = 0x0a; - public static final byte LOG_IN_SUCCESS = 0x0b; - public static final byte LOG_IN_FAILURE = 0x0c; - public static final byte LOG_OUT_SUCCESS = 0x0e; - public static final byte LOG_OUT_FAILURE = 0x0f; - - // Metadata events - public static final byte GAME_LIST = 0x10; - public static final byte ROOM_LIST = 0x12; - public static final byte GAME_ROOM_JOIN = 0x14; - public static final byte GAME_ROOM_LEAVE = 0x16; - public static final byte GAME_ROOM_JOIN_SUCCESS = 0x18; - public static final byte GAME_ROOM_JOIN_FAILURE = 0x19; - - /** - * Event sent from server to client to start message sending from client to server. - */ - public static final byte START = 0x1a; - - /** - * Event sent from server to client to stop messages from being sent to server. - */ - public static final byte STOP = 0x1b; - /** - * Incoming data from another machine/JVM to this JVM (server or client) - */ - public static final byte SESSION_MESSAGE = 0x1c; - - /** - * This event is used to send data from the current machine to remote - * machines using TCP or UDP transports. It is an out-going event. - */ - public static final byte NETWORK_MESSAGE = 0x1d; - - - public static final byte CHANGE_ATTRIBUTE = 0x20; - - /** - * If a remote connection is disconnected or closed then raise this event. - */ - public static final byte DISCONNECT = 0x22; - public static final byte EXCEPTION = 0x24; - - public static Event event(Object source, int eventType) - { - return event(source,eventType,(Session)null); - } - - public static Event event(Object source, int eventType,Session session) - { - EventContext context = null; - if(null != session) - { - context = new DefaultEventContext(); - } - return event(source,eventType,context); - } - - public static Event event(Object source, int eventType, EventContext context) - { - DefaultEvent event = new DefaultEvent(); - event.setSource(source); - event.setType(eventType); - event.setEventContext(context); - event.setTimeStamp(System.currentTimeMillis()); - return event; - } - - /** - * Creates a network event with the source set to the object passed in as - * parameter and the {@link DeliveryGuaranty} set to - * {@link DeliveryGuarantyOptions#RELIABLE}. This method delegates to - * {@link #networkEvent(Object, DeliveryGuaranty)}. - * - * @param source - * The payload of the event. This is the actual data that gets - * transmitted to remote machine. - * @return An instance of {@link NetworkEvent} - */ - public static NetworkEvent networkEvent(Object source) - { - return networkEvent(source,DeliveryGuaranty.DeliveryGuarantyOptions.RELIABLE); - } - - /** - * Creates a network event with the source set to the object passed in as - * parameter and the {@link DeliveryGuaranty} set to the incoming - * parameter. - * - * @param source - * The payload of the event. This is the actual data that gets - * transmitted to remote machine. - * @param deliveryGuaranty - * This decides which transport TCP or UDP to be used to send the - * message to remote machine. - * @return An instance of {@link NetworkEvent} - */ - public static NetworkEvent networkEvent(Object source, DeliveryGuaranty deliveryGuaranty) - { - Event event = event(source,Events.NETWORK_MESSAGE); - NetworkEvent networkEvent = new DefaultNetworkEvent(event); - networkEvent.setDeliveryGuaranty(deliveryGuaranty); - return networkEvent; - } - - public static Event connectEvent(MessageSender messageSender){ - Event event = new ConnectEvent(); - event.setSource(messageSender); - event.setTimeStamp(System.currentTimeMillis()); - return event; - } - - public static Event dataInEvent(Object source) - { - return event(source,Events.SESSION_MESSAGE); - } - - public static Event changeAttributeEvent(String key, Object value) - { - ChangeAttributeEvent changeAttributeEvent = new ChangeAttributeEvent(); - changeAttributeEvent.setType(CHANGE_ATTRIBUTE); - changeAttributeEvent.setKey(key); - changeAttributeEvent.setValue(value); - return changeAttributeEvent; - } -} +package org.menacheri.jetserver.event; + +import org.menacheri.jetserver.app.Session; +import org.menacheri.jetserver.communication.DeliveryGuaranty; +import org.menacheri.jetserver.communication.MessageSender; +import org.menacheri.jetserver.communication.DeliveryGuaranty.DeliveryGuarantyOptions; +import org.menacheri.jetserver.event.impl.DefaultSessionEventHandler; +import org.menacheri.jetserver.event.impl.ChangeAttributeEvent; +import org.menacheri.jetserver.event.impl.ConnectEvent; +import org.menacheri.jetserver.event.impl.DefaultEvent; +import org.menacheri.jetserver.event.impl.DefaultEventContext; +import org.menacheri.jetserver.event.impl.DefaultNetworkEvent; + + +public class Events +{ + public static final byte PROTCOL_VERSION=0x01; + /** + * Events should NEVER have this type. But event handlers can choose + * to have this type to signify that they will handle any type of incoming + * event. For e.g. {@link DefaultSessionEventHandler} + */ + public final static byte ANY = 0x00; + // Lifecycle events. + public final static byte CONNECT = 0x02; + public final static byte CONNECT_FAILED = 0x06; + public static final byte LOG_IN = 0x08; + public static final byte LOG_OUT = 0x0a; + public static final byte LOG_IN_SUCCESS = 0x0b; + public static final byte LOG_IN_FAILURE = 0x0c; + public static final byte LOG_OUT_SUCCESS = 0x0e; + public static final byte LOG_OUT_FAILURE = 0x0f; + + // Metadata events + public static final byte GAME_LIST = 0x10; + public static final byte ROOM_LIST = 0x12; + public static final byte GAME_ROOM_JOIN = 0x14; + public static final byte GAME_ROOM_LEAVE = 0x16; + public static final byte GAME_ROOM_JOIN_SUCCESS = 0x18; + public static final byte GAME_ROOM_JOIN_FAILURE = 0x19; + + /** + * Event sent from server to client to start message sending from client to server. + */ + public static final byte START = 0x1a; + + /** + * Event sent from server to client to stop messages from being sent to server. + */ + public static final byte STOP = 0x1b; + /** + * Incoming data from another machine/JVM to this JVM (server or client) + */ + public static final byte SESSION_MESSAGE = 0x1c; + + /** + * This event is used to send data from the current machine to remote + * machines using TCP or UDP transports. It is an out-going event. + */ + public static final byte NETWORK_MESSAGE = 0x1d; + + + public static final byte CHANGE_ATTRIBUTE = 0x20; + + /** + * If a remote connection is disconnected or closed then raise this event. + */ + public static final byte DISCONNECT = 0x22; + public static final byte EXCEPTION = 0x24; + + public static Event event(Object source, int eventType) + { + return event(source,eventType,(Session)null); + } + + public static Event event(Object source, int eventType,Session session) + { + EventContext context = null; + if(null != session) + { + context = new DefaultEventContext(); + } + return event(source,eventType,context); + } + + public static Event event(Object source, int eventType, EventContext context) + { + DefaultEvent event = new DefaultEvent(); + event.setSource(source); + event.setType(eventType); + event.setEventContext(context); + event.setTimeStamp(System.currentTimeMillis()); + return event; + } + + /** + * Creates a network event with the source set to the object passed in as + * parameter and the {@link DeliveryGuaranty} set to + * {@link DeliveryGuarantyOptions#RELIABLE}. This method delegates to + * {@link #networkEvent(Object, DeliveryGuaranty)}. + * + * @param source + * The payload of the event. This is the actual data that gets + * transmitted to remote machine. + * @return An instance of {@link NetworkEvent} + */ + public static NetworkEvent networkEvent(Object source) + { + return networkEvent(source,DeliveryGuaranty.DeliveryGuarantyOptions.RELIABLE); + } + + /** + * Creates a network event with the source set to the object passed in as + * parameter and the {@link DeliveryGuaranty} set to the incoming + * parameter. + * + * @param source + * The payload of the event. This is the actual data that gets + * transmitted to remote machine. + * @param deliveryGuaranty + * This decides which transport TCP or UDP to be used to send the + * message to remote machine. + * @return An instance of {@link NetworkEvent} + */ + public static NetworkEvent networkEvent(Object source, DeliveryGuaranty deliveryGuaranty) + { + Event event = event(source,Events.NETWORK_MESSAGE); + NetworkEvent networkEvent = new DefaultNetworkEvent(event); + networkEvent.setDeliveryGuaranty(deliveryGuaranty); + return networkEvent; + } + + public static Event connectEvent(MessageSender messageSender){ + Event event = new ConnectEvent(); + event.setSource(messageSender); + event.setTimeStamp(System.currentTimeMillis()); + return event; + } + + public static Event dataInEvent(Object source) + { + return event(source,Events.SESSION_MESSAGE); + } + + public static Event changeAttributeEvent(String key, Object value) + { + ChangeAttributeEvent changeAttributeEvent = new ChangeAttributeEvent(); + changeAttributeEvent.setType(CHANGE_ATTRIBUTE); + changeAttributeEvent.setKey(key); + changeAttributeEvent.setValue(value); + return changeAttributeEvent; + } +} diff --git a/jetserver/src/main/java/org/menacheri/jetserver/handlers/netty/EventDecoder.java b/jetserver/src/main/java/org/menacheri/jetserver/handlers/netty/EventDecoder.java index 6d86a534..9209301f 100644 --- a/jetserver/src/main/java/org/menacheri/jetserver/handlers/netty/EventDecoder.java +++ b/jetserver/src/main/java/org/menacheri/jetserver/handlers/netty/EventDecoder.java @@ -1,32 +1,35 @@ -package org.menacheri.jetserver.handlers.netty; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandler.Sharable; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.handler.codec.oneone.OneToOneDecoder; -import org.menacheri.jetserver.event.Events; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - -@Sharable -public class EventDecoder extends OneToOneDecoder -{ - private static final Logger LOG = LoggerFactory.getLogger(EventDecoder.class); - - @Override - protected Object decode(ChannelHandlerContext ctx, Channel channel, - Object msg) throws Exception - { - if(null == msg) - { - LOG.error("Null msg received in EventDecoder"); - return msg; - } - ChannelBuffer buffer = (ChannelBuffer)msg; - int opCode = buffer.readUnsignedByte(); - return Events.event(buffer, opCode); - } - -} +package org.menacheri.jetserver.handlers.netty; + +import org.jboss.netty.buffer.ChannelBuffer; +import org.jboss.netty.channel.Channel; +import org.jboss.netty.channel.ChannelHandler.Sharable; +import org.jboss.netty.channel.ChannelHandlerContext; +import org.jboss.netty.handler.codec.oneone.OneToOneDecoder; +import org.menacheri.jetserver.event.Events; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +@Sharable +public class EventDecoder extends OneToOneDecoder +{ + private static final Logger LOG = LoggerFactory.getLogger(EventDecoder.class); + + @Override + protected Object decode(ChannelHandlerContext ctx, Channel channel, + Object msg) throws Exception + { + if(null == msg) + { + LOG.error("Null msg received in EventDecoder"); + return msg; + } + ChannelBuffer buffer = (ChannelBuffer)msg; + int opCode = buffer.readUnsignedByte(); + if(Events.LOG_IN == opCode){ + buffer.readUnsignedByte();// To read-destroy the protocol version byte. + } + return Events.event(buffer, opCode); + } + +} diff --git a/jetserver/src/main/resources/jetserver/beans/netty-handlers.xml b/jetserver/src/main/resources/jetserver/beans/netty-handlers.xml index f8d0f198..55d0bb2c 100644 --- a/jetserver/src/main/resources/jetserver/beans/netty-handlers.xml +++ b/jetserver/src/main/resources/jetserver/beans/netty-handlers.xml @@ -1,54 +1,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jetserver/src/main/resources/jetserver/beans/server-beans.xml b/jetserver/src/main/resources/jetserver/beans/server-beans.xml index addb0bfb..371c2765 100644 --- a/jetserver/src/main/resources/jetserver/beans/server-beans.xml +++ b/jetserver/src/main/resources/jetserver/beans/server-beans.xml @@ -1,82 +1,85 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jetserver/src/main/resources/jetserver/beans/server-protocols.xml b/jetserver/src/main/resources/jetserver/beans/server-protocols.xml index 780df10c..b6706fc4 100644 --- a/jetserver/src/main/resources/jetserver/beans/server-protocols.xml +++ b/jetserver/src/main/resources/jetserver/beans/server-protocols.xml @@ -1,54 +1,75 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jetserver/src/main/resources/jetserver/beans/service-beans.xml b/jetserver/src/main/resources/jetserver/beans/service-beans.xml index 70f8cfca..7675ae3b 100644 --- a/jetserver/src/main/resources/jetserver/beans/service-beans.xml +++ b/jetserver/src/main/resources/jetserver/beans/service-beans.xml @@ -1,18 +1,18 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + +