package org.apache.qpid.transport; /* * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ public enum Type { BIN8((byte) 0x00, 1, true), INT8((byte) 0x01, 1, true), UINT8((byte) 0x02, 1, true), CHAR((byte) 0x04, 1, true), BOOLEAN((byte) 0x08, 1, true), BIN16((byte) 0x10, 2, true), INT16((byte) 0x11, 2, true), UINT16((byte) 0x12, 2, true), BIN32((byte) 0x20, 4, true), INT32((byte) 0x21, 4, true), UINT32((byte) 0x22, 4, true), FLOAT((byte) 0x23, 4, true), CHAR_UTF32((byte) 0x27, 4, true), BIN64((byte) 0x30, 8, true), INT64((byte) 0x31, 8, true), UINT64((byte) 0x32, 8, true), DOUBLE((byte) 0x33, 8, true), DATETIME((byte) 0x38, 8, true), BIN128((byte) 0x40, 16, true), UUID((byte) 0x48, 16, true), BIN256((byte) 0x50, 32, true), BIN512((byte) 0x60, 64, true), BIN1024((byte) 0x70, 128, true), VBIN8((byte) 0x80, 1, false), STR8_LATIN((byte) 0x84, 1, false), STR8((byte) 0x85, 1, false), STR8_UTF16((byte) 0x86, 1, false), VBIN16((byte) 0x90, 2, false), STR16_LATIN((byte) 0x94, 2, false), STR16((byte) 0x95, 2, false), STR16_UTF16((byte) 0x96, 2, false), VBIN32((byte) 0xa0, 4, false), MAP((byte) 0xa8, 4, false), LIST((byte) 0xa9, 4, false), ARRAY((byte) 0xaa, 4, false), STRUCT32((byte) 0xab, 4, false), BIN40((byte) 0xc0, 5, true), DEC32((byte) 0xc8, 5, true), BIN72((byte) 0xd0, 9, true), DEC64((byte) 0xd8, 9, true), VOID((byte) 0xf0, 0, true), BIT((byte) 0xf1, 0, true); private final byte code; private final int width; private final boolean fixed; Type(byte code, int width, boolean fixed) { this.code = code; this.width = width; this.fixed = fixed; } public byte getCode() { return code; } public int getWidth() { return width; } public boolean isFixed() { return fixed; } public static Type get(byte code) { switch (code) { case (byte) 0x00: return BIN8; case (byte) 0x01: return INT8; case (byte) 0x02: return UINT8; case (byte) 0x04: return CHAR; case (byte) 0x08: return BOOLEAN; case (byte) 0x10: return BIN16; case (byte) 0x11: return INT16; case (byte) 0x12: return UINT16; case (byte) 0x20: return BIN32; case (byte) 0x21: return INT32; case (byte) 0x22: return UINT32; case (byte) 0x23: return FLOAT; case (byte) 0x27: return CHAR_UTF32; case (byte) 0x30: return BIN64; case (byte) 0x31: return INT64; case (byte) 0x32: return UINT64; case (byte) 0x33: return DOUBLE; case (byte) 0x38: return DATETIME; case (byte) 0x40: return BIN128; case (byte) 0x48: return UUID; case (byte) 0x50: return BIN256; case (byte) 0x60: return BIN512; case (byte) 0x70: return BIN1024; case (byte) 0x80: return VBIN8; case (byte) 0x84: return STR8_LATIN; case (byte) 0x85: return STR8; case (byte) 0x86: return STR8_UTF16; case (byte) 0x90: return VBIN16; case (byte) 0x94: return STR16_LATIN; case (byte) 0x95: return STR16; case (byte) 0x96: return STR16_UTF16; case (byte) 0xa0: return VBIN32; case (byte) 0xa8: return MAP; case (byte) 0xa9: return LIST; case (byte) 0xaa: return ARRAY; case (byte) 0xab: return STRUCT32; case (byte) 0xc0: return BIN40; case (byte) 0xc8: return DEC32; case (byte) 0xd0: return BIN72; case (byte) 0xd8: return DEC64; case (byte) 0xf0: return VOID; case (byte) 0xf1: return BIT; default: return null; } } }