public void defaultReadObject() throws IOException, ClassNotFoundException { if (state != State.NEW) { throw new IllegalStateException("Fields may not be read now"); } final BlockUnmarshaller blockUnmarshaller = serialUnmarshaller.getBlockUnmarshaller(); final int cnt = blockUnmarshaller.available(); if (cnt == -1) { blockUnmarshaller.unblock(); } state = State.ON; currentDescriptor.defaultReadFields(serialUnmarshaller, currentSubject); if (cnt == -1) { blockUnmarshaller.endOfStream(); } }
public int read(final byte[] b) throws IOException { return read(b, 0, b.length); }
public float readFloat() throws IOException { return Float.intBitsToFloat(readInt()); }
public <T> T readObject(final Class<T> type) throws ClassNotFoundException, IOException { final Object obj = readObject(false); try { return type.cast(obj); } catch (ClassCastException e) { throw wrongType(e, type, obj.getClass()); } }
protected void readSerial(final SerialUnmarshaller serialUnmarshaller, final SerializableClass sc, final Object subject) throws IOException, ClassNotFoundException { discardFields(serialUnmarshaller); if ((flags & SC_WRITE_METHOD) != 0) { final BlockUnmarshaller blockUnmarshaller = serialUnmarshaller.getBlockUnmarshaller(); blockUnmarshaller.readToEndBlockData(); blockUnmarshaller.unblock(); } }
if ((descriptor.getFlags() & SC_BLOCK_DATA) != 0) { externalizable.readExternal(blockUnmarshaller); blockUnmarshaller.readToEndBlockData(); blockUnmarshaller.unblock(); } else { instanceCache.add(unshared ? UNSHARED : UNRESOLVED); final Object obj = objectTable.readObject(blockUnmarshaller); blockUnmarshaller.readToEndBlockData(); blockUnmarshaller.unblock(); if (! unshared) instanceCache.set(idx, obj); return obj; blockUnmarshaller.readBlockHeader(leadByte); throw createOptionalDataException(blockUnmarshaller.remaining());
protected void readSerial(final SerialUnmarshaller serialUnmarshaller, final SerializableClass sc, final Object subject) throws IOException, ClassNotFoundException { if ((flags & SC_WRITE_METHOD) != 0) { if (sc.hasReadObject()) { doReadObject(serialUnmarshaller, sc, subject); } else { defaultReadFields(serialUnmarshaller, subject); } final BlockUnmarshaller blockUnmarshaller = serialUnmarshaller.getBlockUnmarshaller(); blockUnmarshaller.readToEndBlockData(); blockUnmarshaller.unblock(); } else { if (sc.hasReadObject()) { final BlockUnmarshaller blockUnmarshaller = serialUnmarshaller.getBlockUnmarshaller(); blockUnmarshaller.endOfStream(); doReadObject(serialUnmarshaller, sc, subject); blockUnmarshaller.unblock(); } else { defaultReadFields(serialUnmarshaller, subject); } } }
public int readUnsignedByte() throws IOException { while (remaining == 0) { readBlockHeader(serialUnmarshaller.readUnsignedByte()); } if (remaining == -1) { throw new EOFException(); } remaining--; return serialUnmarshaller.readUnsignedByte(); }
void readToEndBlockData() throws IOException, ClassNotFoundException { for (;;) { while (remaining > 0) { skipBytes(remaining); } if (remaining == -1) { return; } final int b = serialUnmarshaller.read(); switch (b) { case -1: remaining = -1; return; case TC_ENDBLOCKDATA: remaining = -1; return; case TC_BLOCKDATA: case TC_BLOCKDATALONG: readBlockHeader(b); break; default: // consume object... or whatever serialUnmarshaller.doReadObject(b, false); break; } } }
public Object readObjectUnshared() throws ClassNotFoundException, IOException { return readObject(true); }
public void start(final ByteInput byteInput) throws IOException { depth = 0; blockUnmarshaller = new BlockUnmarshaller(this); super.start(byteInput); int version = readUnsignedShort(); if (version > 5) { throw new IOException("Unsupported protocol version " + version); } this.version = version; }
public double readDouble() throws IOException { return Double.longBitsToDouble(readLong()); }
void readBlockHeader(int leadByte) throws IOException { switch (leadByte) { case TC_BLOCKDATA: remaining = serialUnmarshaller.readUnsignedByte(); return; case TC_BLOCKDATALONG: final int len = serialUnmarshaller.readInt(); if (len < 0) { throw new StreamCorruptedException("Invalid block length"); } remaining = len; return; case TC_ENDBLOCKDATA: remaining = -1; return; default: throw badLeadByte(leadByte); } }
if ((descriptor.getFlags() & SC_BLOCK_DATA) != 0) { externalizable.readExternal(blockUnmarshaller); blockUnmarshaller.readToEndBlockData(); blockUnmarshaller.unblock(); } else { instanceCache.add(unshared ? UNSHARED : UNRESOLVED); final Object obj = objectTable.readObject(blockUnmarshaller); blockUnmarshaller.readToEndBlockData(); blockUnmarshaller.unblock(); if (! unshared) instanceCache.set(idx, obj); return obj; blockUnmarshaller.readBlockHeader(leadByte); throw createOptionalDataException(blockUnmarshaller.remaining());
protected void readSerial(final SerialUnmarshaller serialUnmarshaller, final SerializableClass sc, final Object subject) throws IOException, ClassNotFoundException { if ((flags & SC_WRITE_METHOD) != 0) { if (sc.hasReadObject()) { doReadObject(serialUnmarshaller, sc, subject); } else { defaultReadFields(serialUnmarshaller, subject); } final BlockUnmarshaller blockUnmarshaller = serialUnmarshaller.getBlockUnmarshaller(); blockUnmarshaller.readToEndBlockData(); blockUnmarshaller.unblock(); } else { if (sc.hasReadObject()) { final BlockUnmarshaller blockUnmarshaller = serialUnmarshaller.getBlockUnmarshaller(); blockUnmarshaller.endOfStream(); doReadObject(serialUnmarshaller, sc, subject); blockUnmarshaller.unblock(); } else { defaultReadFields(serialUnmarshaller, subject); } } }
protected void readSerial(final SerialUnmarshaller serialUnmarshaller, final SerializableClass sc, final Object subject) throws IOException, ClassNotFoundException { discardFields(serialUnmarshaller); if ((flags & SC_WRITE_METHOD) != 0) { final BlockUnmarshaller blockUnmarshaller = serialUnmarshaller.getBlockUnmarshaller(); blockUnmarshaller.readToEndBlockData(); blockUnmarshaller.unblock(); } }
public <T> T readObject(final Class<T> type) throws ClassNotFoundException, IOException { final Object obj = readObject(false); try { return type.cast(obj); } catch (ClassCastException e) { throw wrongType(e, type, obj.getClass()); } }
public byte readByte() throws IOException { while (remaining == 0) { readBlockHeader(serialUnmarshaller.readUnsignedByte()); } if (remaining == -1) { throw new EOFException(); } remaining--; return serialUnmarshaller.readByte(); }
void readToEndBlockData() throws IOException, ClassNotFoundException { for (;;) { while (remaining > 0) { skipBytes(remaining); } if (remaining == -1) { return; } final int b = serialUnmarshaller.read(); switch (b) { case -1: remaining = -1; return; case TC_ENDBLOCKDATA: remaining = -1; return; case TC_BLOCKDATA: case TC_BLOCKDATALONG: readBlockHeader(b); break; default: // consume object... or whatever serialUnmarshaller.doReadObject(b, false); break; } } }
public Object readObject() throws ClassNotFoundException, IOException { return readObject(false); }