001package org.xbib.elasticsearch.http.netty;
002
003import org.jboss.netty.channel.ChannelHandlerContext;
004import org.jboss.netty.channel.ExceptionEvent;
005import org.jboss.netty.channel.MessageEvent;
006import org.jboss.netty.handler.codec.http.HttpRequest;
007import org.jboss.netty.handler.codec.http.websocketx.WebSocketFrame;
008
009/**
010 * Netty implementation for a WebSocket request handler.
011 * It is based on the HTTP request handler.
012 */
013public class NettyWebSocketRequestHandler extends NettyHttpRequestHandler {
014
015    public NettyWebSocketRequestHandler(NettyWebSocketServerTransport serverTransport) {
016        super(serverTransport);
017    }
018
019    @Override
020    public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
021        Object msg = e.getMessage();
022        if (msg instanceof HttpRequest) {
023            super.messageReceived(ctx, e);
024        } else if (msg instanceof WebSocketFrame) {
025            serverTransport.frame(handshaker, (WebSocketFrame) msg, ctx);
026        }
027    }
028
029    @Override
030    public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception {
031        serverTransport.exceptionCaught(ctx, e);
032        e.getChannel().close();
033    }
034
035}