EIOTransport.java 1.42 KB
/*
 * Decompiled with CFR 0_118.
 */
package com.adobe.granite.socketio.impl.engine;

import com.adobe.granite.socketio.impl.engine.EIOPacket;
import com.adobe.granite.socketio.impl.engine.EIOTransportListener;
import java.util.Set;

public abstract class EIOTransport {
    protected State state = State.OPENING;
    private EIOTransportListener listener = EIOTransportListener.NOP;

    public abstract String getName();

    public void setListener(EIOTransportListener listener) {
        this.listener = listener;
    }

    public abstract Set<String> getUpgrades();

    public abstract boolean supportsFraming();

    public /* varargs */ abstract void send(EIOPacket ... var1);

    public void close() {
        this.state = State.CLOSING;
        this.doClose();
    }

    protected void onOpen() {
        this.state = State.OPEN;
        this.listener.onOpen();
    }

    protected abstract void doClose();

    protected void onError(String err) {
        this.listener.onError(err);
    }

    protected void onPacket(EIOPacket packet) {
        this.listener.onPacket(packet);
    }

    protected void onData(String data) {
        this.onPacket(EIOPacket.decode(data));
    }

    protected void onClose() {
        this.state = State.CLOSED;
        this.listener.onClose();
    }

    private static enum State {
        OPENING,
        OPEN,
        CLOSING,
        CLOSED;
        

        private State() {
        }
    }

}