ClassDefinition lookup(int classId, int version) { long versionedClassId = combineToLong(classId, version); return versionedDefinitions.get(versionedClassId); }
@Override public void disposeResult(long taskId) { int partitionId = Bits.extractInt(taskId, false); int sequence = Bits.extractInt(taskId, true); ClientMessage clientMessage = DurableExecutorDisposeResultCodec.encodeRequest(name, sequence); invokeOnPartition(clientMessage, partitionId); }
@Override public char readChar(int position) throws EOFException { checkAvailable(position, CHAR_SIZE_IN_BYTES); return Bits.readChar(data, position, bigEndian); }
@Override public boolean hasPartitionHash() { return payload != null && payload.length >= HEAP_DATA_OVERHEAD && Bits.readIntB(payload, PARTITION_HASH_OFFSET) != 0; }
@Override public int read(char[] cbuf, int off, int len) throws IOException { if (off < 0 || (off + len) > cbuf.length) { throw new IndexOutOfBoundsException(); } int i = 0; try { for (i = 0; i < len; i++) { byte firstByte = input.readByte(); char c = Bits.readUtf8Char(input, firstByte); cbuf[off + i] = c; } } catch (EOFException e) { if (i == 0) { return -1; } } return i; }
@Override public void writeChar(int position, final int v) throws IOException { Bits.writeChar(buffer, position, (char) v, isBigEndian); }
@Override public short readShort(int position) throws EOFException { checkAvailable(position, SHORT_SIZE_IN_BYTES); return Bits.readShort(data, position, bigEndian); }
@Override public int readInt(int position, ByteOrder byteOrder) throws EOFException { checkAvailable(position, INT_SIZE_IN_BYTES); return Bits.readInt(data, position, byteOrder == ByteOrder.BIG_ENDIAN); }
@Override public long readLong(int position, ByteOrder byteOrder) throws EOFException { checkAvailable(position, LONG_SIZE_IN_BYTES); return Bits.readLong(data, position, byteOrder == ByteOrder.BIG_ENDIAN); }
public boolean readFrom(ByteBuffer src) { int frameLength = 0; if (this.buffer == null) { // init internal buffer final int remaining = src.remaining(); if (remaining < Bits.INT_SIZE_IN_BYTES) { // we don't have even the frame length ready return false; } frameLength = Bits.readIntL(src); // we need to restore the position; as if we didn't read the frame-length src.position(src.position() - Bits.INT_SIZE_IN_BYTES); if (frameLength < HEADER_SIZE) { throw new IllegalArgumentException("Client message frame length cannot be smaller than header size."); } wrap(new byte[frameLength], 0, USE_UNSAFE); } frameLength = frameLength > 0 ? frameLength : getFrameLength(); accumulate(src, frameLength - index()); return isComplete(); }
@Override public boolean hasPartitionHash() { return payload != null && payload.length >= HEAP_DATA_OVERHEAD && Bits.readIntB(payload, PARTITION_HASH_OFFSET) != 0; }
@Override public String readUTF() throws IOException { int charCount = readInt(); if (charCount == NULL_ARRAY_LENGTH) { return null; } char[] charBuffer = new char[charCount]; byte b; for (int i = 0; i < charCount; i++) { b = dataInput.readByte(); if (b < 0) { charBuffer[i] = Bits.readUtf8Char(dataInput, b); } else { charBuffer[i] = (char) b; } } return new String(charBuffer, 0, charCount); }
@Override public void writeChar(int position, final int v) throws IOException { Bits.writeChar(buffer, position, (char) v, isBigEndian); }
@Override public short readShort(int position, ByteOrder byteOrder) throws EOFException { checkAvailable(position, SHORT_SIZE_IN_BYTES); return Bits.readShort(data, position, byteOrder == ByteOrder.BIG_ENDIAN); }
@Override public int readInt(int position, ByteOrder byteOrder) throws EOFException { checkAvailable(position, INT_SIZE_IN_BYTES); return Bits.readInt(data, position, byteOrder == ByteOrder.BIG_ENDIAN); }
@Override public long readLong(int position, ByteOrder byteOrder) throws EOFException { checkAvailable(position, LONG_SIZE_IN_BYTES); return Bits.readLong(data, position, byteOrder == ByteOrder.BIG_ENDIAN); }
public boolean readFrom(ByteBuffer src) { int frameLength = 0; if (this.buffer == null) { // init internal buffer final int remaining = src.remaining(); if (remaining < Bits.INT_SIZE_IN_BYTES) { // we don't have even the frame length ready return false; } frameLength = Bits.readIntL(src); // we need to restore the position; as if we didn't read the frame-length src.position(src.position() - Bits.INT_SIZE_IN_BYTES); if (frameLength < HEADER_SIZE) { throw new IllegalArgumentException("Client message frame length cannot be smaller than header size."); } wrap(new byte[frameLength], 0, USE_UNSAFE); } frameLength = frameLength > 0 ? frameLength : getFrameLength(); accumulate(src, frameLength - index()); return isComplete(); }
ClassDefinition lookup(int classId, int version) { long versionedClassId = combineToLong(classId, version); return versionedDefinitions.get(versionedClassId); }