blob: 05904f29959408c5be7a3de2d0d82c6e2ee0d529 [file] [log] [blame]
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;
}
}
}