AbstractFrameHandler.java

package sprout.server.websocket.framehandler;

import sprout.server.websocket.exception.WebSocketProtocolException;

public abstract class AbstractFrameHandler implements FrameHandler{
    protected FrameHandler next;

    @Override
    public void setNext(FrameHandler next) {
        this.next = next;
    }

    @Override
    public boolean handle(FrameProcessingContext state) throws Exception {
        if (canHandle(state)) {
            return process(state);
        } else if (next != null) {
            return next.handle(state);
        }
        throw new WebSocketProtocolException("Unknown or invalid frame sequence for opcode: " + state.getFrame().getOpcode());
    }

    protected abstract boolean process(FrameProcessingContext state) throws Exception;
}