Package com.tinkerpop.gremlin.driver.handler

Source Code of com.tinkerpop.gremlin.driver.handler.WebSocketGremlinResponseDecoder

package com.tinkerpop.gremlin.driver.handler;

import com.tinkerpop.gremlin.driver.MessageSerializer;
import com.tinkerpop.gremlin.driver.ser.MessageTextSerializer;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageDecoder;
import io.netty.handler.codec.http.websocketx.BinaryWebSocketFrame;
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
import io.netty.handler.codec.http.websocketx.WebSocketFrame;
import io.netty.util.ReferenceCountUtil;

import java.util.List;

/**
* @author Stephen Mallette (http://stephen.genoprime.com)
*/
public class WebSocketGremlinResponseDecoder extends MessageToMessageDecoder<WebSocketFrame> {
    private final MessageSerializer serializer;

    public WebSocketGremlinResponseDecoder(final MessageSerializer serializer) {
        this.serializer = serializer;
    }

    @Override
    protected void decode(final ChannelHandlerContext channelHandlerContext, final WebSocketFrame webSocketFrame, final List<Object> objects) throws Exception {
        try {
            if (webSocketFrame instanceof BinaryWebSocketFrame) {
                final BinaryWebSocketFrame tf = (BinaryWebSocketFrame) webSocketFrame;
                objects.add(serializer.deserializeResponse(tf.content()));
            } else {
                final TextWebSocketFrame tf = (TextWebSocketFrame) webSocketFrame;
                final MessageTextSerializer textSerializer = (MessageTextSerializer) serializer;
                objects.add(textSerializer.deserializeResponse(tf.text()));
            }
        } finally {
            ReferenceCountUtil.release(webSocketFrame);
        }
    }
}
TOP

Related Classes of com.tinkerpop.gremlin.driver.handler.WebSocketGremlinResponseDecoder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.