@Override public Object valueArrayDeserialize(DataInput2 in, int size) throws IOException { size *= 2; long[] ret = new long[size]; for (int i = 0; i < size; i++) { ret[i] = in.readLong(); } return ret; }
@Override public Object valueArrayDeserialize(DataInput2 in, int size) throws IOException { long[] ret = new long[size]; for(int i=0;i<size;i++){ ret[i] = in.readLong(); } return ret; }
@Override public Date deserialize(DataInput2 in, int available) throws IOException { return new Date(in.readLong()); }
@Override public Long deserialize(DataInput2 in, int available) throws IOException { return new Long(in.readLong()); }
@Override public double readDouble() throws IOException { return Double.longBitsToDouble(readLong()); }
@Override public TimeSeriesIndex deserialize(DataInput2 input, int available) throws IOException { String indexType = input.readUTF(); long startTime = input.readLong(); long endTime = input.readLong(); long spacing = input.readLong(); if ("regularIndex".equals(indexType)) { return new RegularTimeSeriesIndex(startTime, endTime, spacing); } else { throw new AssertionError(); } } }
@Override public long[] deserialize(DataInput2 in, int available) throws IOException { final int size = in.unpackInt(); long[] ret = new long[size]; for (int i = 0; i < size; i++) { ret[i] = in.readLong(); } return ret; }
@Override public long[] deserialize(DataInput2 in, int available) throws IOException { //there is bitmap at first 16 bytes, each non-zero long has bit set //to determine offset one must traverse bitmap and count number of bits set long bitmap1 = in.readLong(); long bitmap2 = in.readLong(); int len = 2+2*(Long.bitCount(bitmap1) + Long.bitCount(bitmap2)); if (len == 2) { return dirEmpty(); } long[] ret = new long[len]; ret[0] = bitmap1; ret[1] = bitmap2; in.unpackLongArray(ret, 2, len); //unpack delta for(int i=5;i<ret.length;i+=2){ ret[i] += ret[i-2]; } return ret; }
@Override public E valueArrayBinaryGet(DataInput2 input, int keysLen, int pos) throws IOException { input.skipBytes(pos*8); return unpack(input.readLong()); }
@Override public Map<String, Object> deserialize(DataInput2 input, int available) throws IOException { Objects.requireNonNull(input); Map<String, Object> map = new TreeMap(); int size = input.unpackInt(); for (int i = 0; i < size; i++) { String k = input.readUTF(); if (k.startsWith("D")) { map.put(k.substring(1), input.readDouble()); } else if (k.startsWith("L")) { map.put(k.substring(1), input.readLong()); } else if (k.startsWith("S")) { map.put(k.substring(1), input.readUTF()); } else if (k.startsWith("I")) { map.put(k.substring(1), input.readInt()); } } return map; }
@Override public int valueArrayBinarySearch(Long key, DataInput2 input, int keysLen, Comparator comparator) throws IOException { if (comparator != this) return super.valueArrayBinarySearch(key, input, keysLen, comparator); long key2 = key; for (int pos = 0; pos < keysLen; pos++) { long from = input.readLong(); if (key2 <= from) { input.skipBytes((keysLen-pos-1)*8); return (key2 == from) ? pos : -(pos + 1); } } //not found return -(keysLen + 1); }
@Override public LockDesc deserialize(@NotNull DataInput2 input, int available) throws IOException { byte version = input.readByte(); if (version != VERSION) { throw new IOException("Unexpected data format"); } final String path = input.readUTF(); final String hash = input.readUTF(); final String token = input.readUTF(); final String owner = input.readUTF(); final String comment = input.readBoolean() ? input.readUTF() : null; final long created = input.readLong(); return new LockDesc(path, hash, token, owner, comment, created); }
@Override public NodeInfo deserialize(DataInput2 input, int available) throws IOException { String nodeId = UuidSerializer.INSTANCE.deserialize(input, available).toString(); String name = input.readUTF(); String pseudoClass = input.readUTF(); String description = input.readUTF(); long creationTime = input.readLong(); long modificationTime = input.readLong(); int version = input.readInt(); NodeGenericMetadata metadata = new NodeGenericMetadata(); int stringMetadataSize = input.readInt(); for (int i = 0; i < stringMetadataSize; i++) { metadata.setString(input.readUTF(), input.readUTF()); } int doubleMetadataSize = input.readInt(); for (int i = 0; i < doubleMetadataSize; i++) { metadata.setDouble(input.readUTF(), input.readDouble()); } int intMetadataSize = input.readInt(); for (int i = 0; i < intMetadataSize; i++) { metadata.setInt(input.readUTF(), input.readInt()); } int booleanMetadataSize = input.readInt(); for (int i = 0; i < booleanMetadataSize; i++) { metadata.setBoolean(input.readUTF(), input.readBoolean()); } return new NodeInfo(nodeId, name, pseudoClass, description, creationTime, modificationTime, version, metadata); } }