String key = new String(new byte[] { buf.get(), buf.get() });
EncodingKey eKey = EncodingKey.byFirstTwoChars(key);
if (eKey == null)
throw new RuntimeException("Unknown encoding key: " + key);
EncodingID id = EncodingID.values()[buf.get()];
int paramLen = ByteBufferUtils.readUnsignedITF8(buf);
byte[] paramBytes = new byte[paramLen];
buf.get(paramBytes);
eMap.put(eKey, new EncodingParams(id, paramBytes));
log.debug(String.format("FOUND ENCODING: %s, %s, %s.",
eKey.name(), id.name(),
Arrays.toString(Arrays.copyOf(paramBytes, 20))));
}
}
{ // tag encoding map:
int byteSize = ByteBufferUtils.readUnsignedITF8(is);
byte[] bytes = new byte[byteSize];
ByteBufferUtils.readFully(bytes, is);
ByteBuffer buf = ByteBuffer.wrap(bytes);
int mapSize = ByteBufferUtils.readUnsignedITF8(buf);
tMap = new TreeMap<Integer, EncodingParams>();
for (int i = 0; i < mapSize; i++) {
int key = ByteBufferUtils.readUnsignedITF8(buf);
EncodingID id = EncodingID.values()[buf.get()];
int paramLen = ByteBufferUtils.readUnsignedITF8(buf);
byte[] paramBytes = new byte[paramLen];
buf.get(paramBytes);
tMap.put(key, new EncodingParams(id, paramBytes));