package com.neverwinterdp.sparkngin.http; import java.io.IOException; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.http.FullHttpRequest; import io.netty.handler.codec.http.HttpRequest; import com.neverwinterdp.message.Message; import com.neverwinterdp.netty.http.RouteHandlerGeneric; import com.neverwinterdp.sparkngin.Ack; import com.neverwinterdp.sparkngin.Sparkngin; import com.neverwinterdp.util.IOUtil; /** * @author Tuan Nguyen * @email tuan08@gmail.com */ public class JBinaryMessageRouteHandler extends RouteHandlerGeneric { private Sparkngin sparkngin ; public JBinaryMessageRouteHandler(Sparkngin sparkngin) { this.sparkngin = sparkngin ; } @Override protected void doPost(ChannelHandlerContext ctx, HttpRequest httpReq) { FullHttpRequest req = (FullHttpRequest) httpReq ; ByteBuf byteBuf = req.content() ; byte[] data = new byte[byteBuf.readableBytes()] ; byteBuf.readBytes(data) ; Ack ack = null ; try { Message message = (Message) IOUtil.deserialize(data); ack = sparkngin.push(message); } catch (Exception e) { ack = new Ack() ; ack.setStatus(Ack.Status.ERROR); ack.setMessage(e.getMessage()); e.printStackTrace(); } try { writeBytes(ctx, httpReq, IOUtil.serialize(ack)) ; } catch (IOException e) { e.printStackTrace(); this.writeContent(ctx, req, "ERROR: " + e.getMessage(), "text/plain"); } } public void close() { super.close() ; } }