package io.netty.protocol.wamp; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.MessageToMessageCodec; import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; import io.netty.protocol.wamp.messages.MessageMapper; import io.netty.protocol.wamp.messages.WampMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.List; public class WampMessageCodec extends MessageToMessageCodec<TextWebSocketFrame, WampMessage> { private static final Logger logger = LoggerFactory.getLogger(WampMessageCodec.class); @Override protected void encode(ChannelHandlerContext ctx, WampMessage msg, List<Object> out) throws Exception { // TODO: validation out.add(new TextWebSocketFrame(msg.toJson())); logger.debug("WampMessage encoded: {}", msg.toString()); } @Override protected void decode(ChannelHandlerContext ctx, TextWebSocketFrame msg, List<Object> out) throws Exception { try { WampMessage wampMessage; wampMessage = MessageMapper.fromJson(msg.text()); out.add(wampMessage); logger.debug("WampMessage decoded: {}", wampMessage.toString()); } catch (IOException e) { e.printStackTrace(); // TODO: send error message } } }