// Path: dragonite-mux/src/main/java/com/vecsight/dragonite/mux/exception/IncorrectFrameException.java
// public class IncorrectFrameException extends MuxException {
// 
//     public IncorrectFrameException(final String msg) {
//         super(msg);
//     }
// 
// }
// 
// Path: dragonite-mux/src/main/java/com/vecsight/dragonite/mux/frame/Frame.java
// public interface Frame {
// 
//     byte getVersion();
// 
//     FrameType getType();
// 
//     byte[] toBytes();
// 
//     int getFixedLength();
// 
//     int getExpectedLength();
// 
// }
// 
// Path: dragonite-mux/src/main/java/com/vecsight/dragonite/mux/frame/FrameType.java
// public enum FrameType {
//     CREATE((byte) 0),
//     DATA((byte) 1),
//     CLOSE((byte) 2),
//     PAUSE((byte) 3),
//     CONTINUE((byte) 4);
// 
//     private final byte value;
// 
//     FrameType(final byte value) {
//         this.value = value;
//     }
// 
//     public byte getValue() {
//         return value;
//     }
// 
//     private static final FrameType[] types = FrameType.values();
// 
//     public static FrameType fromByte(final byte type) {
//         try {
//             return types[type];
//         } catch (final ArrayIndexOutOfBoundsException e) {
//             throw new IllegalArgumentException("Type byte " + type + " not found");
//         }
//     }
// 
// }
// 
// Path: dragonite-mux/src/main/java/com/vecsight/dragonite/mux/misc/MuxGlobalConstants.java
// public final class MuxGlobalConstants {
// 
//     public static final String LIBRARY_VERSION = MuxBuildConfig.VERSION;
// 
//     public static final byte PROTOCOL_VERSION = 2;
// 
//     public static final int CONNECTION_MAX_DATA_BUFFER_SIZE = 1048576; //1M
// 
// }
// 
// Path: dragonite-utils/src/main/java/com/vecsight/dragonite/utils/binary/BinaryReader.java
// public class BinaryReader {
// 
//     private final ByteBuffer byteBuffer;
// 
//     public BinaryReader(final byte[] bytes) {
//         byteBuffer = ByteBuffer.wrap(bytes);
//     }
// 
//     public byte getSignedByte() {
//         return byteBuffer.get();
//     }
// 
//     public short getUnsignedByte() {
//         return (short) (byteBuffer.get() & (short) 0xff);
//     }
// 
//     public short getSignedShort() {
//         return byteBuffer.getShort();
//     }
// 
//     public int getUnsignedShort() {
//         return byteBuffer.getShort() & 0xffff;
//     }
// 
//     public int getSignedInt() {
//         return byteBuffer.getInt();
//     }
// 
//     public long getUnsignedInt() {
//         return (long) byteBuffer.getInt() & 0xffffffffL;
//     }
// 
//     public void getBytes(final byte[] bytes) {
//         byteBuffer.get(bytes);
//     }
// 
//     public byte[] getBytesGroupWithByteLength() {
//         final short len = getUnsignedByte();
//         final byte[] bytes = new byte[len];
//         byteBuffer.get(bytes);
//         return bytes;
//     }
// 
//     public byte[] getBytesGroupWithShortLength() {
//         final int len = getUnsignedShort();
//         final byte[] bytes = new byte[len];
//         byteBuffer.get(bytes);
//         return bytes;
//     }
// 
//     public boolean getBoolean() {
//         return byteBuffer.get() != 0;
//     }
// 
//     public int remaining() {
//         return byteBuffer.remaining();
//     }
// 
// }
// 
// Path: dragonite-utils/src/main/java/com/vecsight/dragonite/utils/binary/BinaryWriter.java
// public class BinaryWriter {
// 
//     private final ByteBuffer byteBuffer;
// 
//     public BinaryWriter(final int capacity) {
//         byteBuffer = ByteBuffer.allocate(capacity);
//     }
// 
//     public BinaryWriter putSignedByte(final byte sb) {
//         byteBuffer.put(sb);
//         return this;
//     }
// 
//     public BinaryWriter putUnsignedByte(final short ub) {
//         byteBuffer.put((byte) (ub & 0xff));
//         return this;
//     }
// 
//     public BinaryWriter putSignedShort(final short ss) {
//         byteBuffer.putShort(ss);
//         return this;
//     }
// 
//     public BinaryWriter putUnsignedShort(final int us) {
//         byteBuffer.putShort((short) (us & 0xffff));
//         return this;
//     }
// 
//     public BinaryWriter putSignedInt(final int si) {
//         byteBuffer.putInt(si);
//         return this;
//     }
// 
//     public BinaryWriter putUnsignedInt(final long ui) {
//         byteBuffer.putInt((int) (ui & 0xffffffffL));
//         return this;
//     }
// 
//     public BinaryWriter putBytes(final byte[] bytes) {
//         byteBuffer.put(bytes);
//         return this;
//     }
// 
//     public BinaryWriter putBytesGroupWithByteLength(final byte[] bytes) {
//         putUnsignedByte((short) bytes.length);
//         putBytes(bytes);
//         return this;
//     }
// 
//     public BinaryWriter putBytesGroupWithShortLength(final byte[] bytes) {
//         putUnsignedShort(bytes.length);
//         putBytes(bytes);
//         return this;
//     }
// 
//     public BinaryWriter putBoolean(final boolean b) {
//         byteBuffer.put((byte) (b ? 1 : 0));
//         return this;
//     }
// 
//     public byte[] toBytes() {
//         return byteBuffer.array();
//     }
// 
// }


import com.vecsight.dragonite.mux.exception.IncorrectFrameException;
import com.vecsight.dragonite.mux.frame.Frame;
import com.vecsight.dragonite.mux.frame.FrameType;
import com.vecsight.dragonite.mux.misc.MuxGlobalConstants;
import com.vecsight.dragonite.utils.binary.BinaryReader;
import com.vecsight.dragonite.utils.binary.BinaryWriter;
import java.nio.BufferUnderflowException;
/*
 * The Dragonite Project
 * -------------------------
 * See the LICENSE file in the root directory for license information.
 */


package com.vecsight.dragonite.mux.frame.types;



/*
 * VERSION  1 SB
 * TYPE     1 SB
 * connID   2 SS
 */

public class ContinueConnectionFrame implements Frame {

    private static final byte VERSION = MuxGlobalConstants.PROTOCOL_VERSION;

// Path: dragonite-mux/src/main/java/com/vecsight/dragonite/mux/exception/IncorrectFrameException.java
// public class IncorrectFrameException extends MuxException {
// 
//     public IncorrectFrameException(final String msg) {
//         super(msg);
//     }
// 
// }
// 
// Path: dragonite-mux/src/main/java/com/vecsight/dragonite/mux/frame/Frame.java
// public interface Frame {
// 
//     byte getVersion();
// 
//     FrameType getType();
// 
//     byte[] toBytes();
// 
//     int getFixedLength();
// 
//     int getExpectedLength();
// 
// }
// 
// Path: dragonite-mux/src/main/java/com/vecsight/dragonite/mux/frame/FrameType.java
// public enum FrameType {
//     CREATE((byte) 0),
//     DATA((byte) 1),
//     CLOSE((byte) 2),
//     PAUSE((byte) 3),
//     CONTINUE((byte) 4);
// 
//     private final byte value;
// 
//     FrameType(final byte value) {
//         this.value = value;
//     }
// 
//     public byte getValue() {
//         return value;
//     }
// 
//     private static final FrameType[] types = FrameType.values();
// 
//     public static FrameType fromByte(final byte type) {
//         try {
//             return types[type];
//         } catch (final ArrayIndexOutOfBoundsException e) {
//             throw new IllegalArgumentException("Type byte " + type + " not found");
//         }
//     }
// 
// }
// 
// Path: dragonite-mux/src/main/java/com/vecsight/dragonite/mux/misc/MuxGlobalConstants.java
// public final class MuxGlobalConstants {
// 
//     public static final String LIBRARY_VERSION = MuxBuildConfig.VERSION;
// 
//     public static final byte PROTOCOL_VERSION = 2;
// 
//     public static final int CONNECTION_MAX_DATA_BUFFER_SIZE = 1048576; //1M
// 
// }
// 
// Path: dragonite-utils/src/main/java/com/vecsight/dragonite/utils/binary/BinaryReader.java
// public class BinaryReader {
// 
//     private final ByteBuffer byteBuffer;
// 
//     public BinaryReader(final byte[] bytes) {
//         byteBuffer = ByteBuffer.wrap(bytes);
//     }
// 
//     public byte getSignedByte() {
//         return byteBuffer.get();
//     }
// 
//     public short getUnsignedByte() {
//         return (short) (byteBuffer.get() & (short) 0xff);
//     }
// 
//     public short getSignedShort() {
//         return byteBuffer.getShort();
//     }
// 
//     public int getUnsignedShort() {
//         return byteBuffer.getShort() & 0xffff;
//     }
// 
//     public int getSignedInt() {
//         return byteBuffer.getInt();
//     }
// 
//     public long getUnsignedInt() {
//         return (long) byteBuffer.getInt() & 0xffffffffL;
//     }
// 
//     public void getBytes(final byte[] bytes) {
//         byteBuffer.get(bytes);
//     }
// 
//     public byte[] getBytesGroupWithByteLength() {
//         final short len = getUnsignedByte();
//         final byte[] bytes = new byte[len];
//         byteBuffer.get(bytes);
//         return bytes;
//     }
// 
//     public byte[] getBytesGroupWithShortLength() {
//         final int len = getUnsignedShort();
//         final byte[] bytes = new byte[len];
//         byteBuffer.get(bytes);
//         return bytes;
//     }
// 
//     public boolean getBoolean() {
//         return byteBuffer.get() != 0;
//     }
// 
//     public int remaining() {
//         return byteBuffer.remaining();
//     }
// 
// }
// 
// Path: dragonite-utils/src/main/java/com/vecsight/dragonite/utils/binary/BinaryWriter.java
// public class BinaryWriter {
// 
//     private final ByteBuffer byteBuffer;
// 
//     public BinaryWriter(final int capacity) {
//         byteBuffer = ByteBuffer.allocate(capacity);
//     }
// 
//     public BinaryWriter putSignedByte(final byte sb) {
//         byteBuffer.put(sb);
//         return this;
//     }
// 
//     public BinaryWriter putUnsignedByte(final short ub) {
//         byteBuffer.put((byte) (ub & 0xff));
//         return this;
//     }
// 
//     public BinaryWriter putSignedShort(final short ss) {
//         byteBuffer.putShort(ss);
//         return this;
//     }
// 
//     public BinaryWriter putUnsignedShort(final int us) {
//         byteBuffer.putShort((short) (us & 0xffff));
//         return this;
//     }
// 
//     public BinaryWriter putSignedInt(final int si) {
//         byteBuffer.putInt(si);
//         return this;
//     }
// 
//     public BinaryWriter putUnsignedInt(final long ui) {
//         byteBuffer.putInt((int) (ui & 0xffffffffL));
//         return this;
//     }
// 
//     public BinaryWriter putBytes(final byte[] bytes) {
//         byteBuffer.put(bytes);
//         return this;
//     }
// 
//     public BinaryWriter putBytesGroupWithByteLength(final byte[] bytes) {
//         putUnsignedByte((short) bytes.length);
//         putBytes(bytes);
//         return this;
//     }
// 
//     public BinaryWriter putBytesGroupWithShortLength(final byte[] bytes) {
//         putUnsignedShort(bytes.length);
//         putBytes(bytes);
//         return this;
//     }
// 
//     public BinaryWriter putBoolean(final boolean b) {
//         byteBuffer.put((byte) (b ? 1 : 0));
//         return this;
//     }
// 
//     public byte[] toBytes() {
//         return byteBuffer.array();
//     }
// 
// }


// Path: dragonite-mux/src/main/java/com/vecsight/dragonite/mux/frame/types/ContinueConnectionFrame.java
import com.vecsight.dragonite.mux.exception.IncorrectFrameException;
import com.vecsight.dragonite.mux.frame.Frame;
import com.vecsight.dragonite.mux.frame.FrameType;
import com.vecsight.dragonite.mux.misc.MuxGlobalConstants;
import com.vecsight.dragonite.utils.binary.BinaryReader;
import com.vecsight.dragonite.utils.binary.BinaryWriter;
import java.nio.BufferUnderflowException;

/*
 * The Dragonite Project
 * -------------------------
 * See the LICENSE file in the root directory for license information.
 */


package com.vecsight.dragonite.mux.frame.types;



/*
 * VERSION  1 SB
 * TYPE     1 SB
 * connID   2 SS
 */

public class ContinueConnectionFrame implements Frame {

    private static final byte VERSION = MuxGlobalConstants.PROTOCOL_VERSION;

    private static final FrameType TYPE = FrameType.CONTINUE;