All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.socket.engineio.server.parser.Parser Maven / Gradle / Ivy

package io.socket.engineio.server.parser;

import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface Parser {

    Map PACKETS = Collections.unmodifiableMap(new HashMap() {{
        put(Packet.OPEN, 0);
        put(Packet.CLOSE, 1);
        put(Packet.PING, 2);
        put(Packet.PONG, 3);
        put(Packet.MESSAGE, 4);
        put(Packet.UPGRADE, 5);
        put(Packet.NOOP, 6);
    }});
    Map PACKETS_REVERSE = Collections.unmodifiableMap(new HashMap() {{
        put(0, Packet.OPEN);
        put(1, Packet.CLOSE);
        put(2, Packet.PING);
        put(3, Packet.PONG);
        put(4, Packet.MESSAGE);
        put(5, Packet.UPGRADE);
        put(6, Packet.NOOP);
    }});

    Packet ERROR_PACKET = new Packet<>(Packet.ERROR, "parser error");

    Parser PROTOCOL_V3 = new ParserV3();
    Parser PROTOCOL_V4 = new ParserV4();

    interface EncodeCallback {
        void call(T data);
    }

    interface DecodePayloadCallback {
        boolean call(Packet packet, int index, int total);
    }

    int getProtocolVersion();

    void encodePacket(Packet packet, boolean supportsBinary, EncodeCallback callback);
    Packet decodePacket(Object data);

    void encodePayload(List> packets, boolean supportsBinary, EncodeCallback callback);
    void decodePayload(Object data, DecodePayloadCallback callback);
}