/** * Skip <i>len</i> number of bytes in input stream<i>in</i> * * @param in input stream * @param len number of bytes to skip * @throws IOException when skipped less number of bytes */ public static void skipFully(DataInput in, int len) throws IOException { int total = 0; int cur = 0; while ((total < len) && ((cur = in.skipBytes(len - total)) > 0)) { total += cur; } if (total < len) { throw new IOException( "Not able to skip " + len + " bytes, possibly " + "due to end of input."); } }
public void readObject(DataInput in) throws IOException { boolean sgIO = in.readBoolean(); int nodeID = in.readInt(); int nodeClassID = in.readShort(); nodeClassName = null; if (nodeClassID == -1) nodeClassName = in.readUTF(); readConstructorParams(in); if (nodeClassID != -1) { node = createNode(); nodeClassName = node.getClass().getName(); } else node = createNode(nodeClassName); if (sgIO) { if (control.getCurrentFileVersion() == 1) ((com.sun.j3d.utils.scenegraph.io.SceneGraphIO) node).readSceneGraphObject(in); else { int size = in.readInt(); if (node instanceof com.sun.j3d.utils.scenegraph.io.SceneGraphIO) { byte[] bytes = new byte[size]; in.readFully(bytes); ByteArrayInputStream byteStream = new ByteArrayInputStream(bytes); DataInputStream tmpIn = new DataInputStream(byteStream); ((com.sun.j3d.utils.scenegraph.io.SceneGraphIO) node).readSceneGraphObject(tmpIn); tmpIn.close(); } else { in.skipBytes(size); } } } symbol = control.getSymbolTable().createSymbol(this, node, nodeID); readUserData(in); if (control.getCurrentFileVersion() > 2) { node.setName(readString(in)); } readCapabilities(in); }
public static Data decodeData(final DataInput buffer, PeerAddress originator) throws InvalidKeyException, NoSuchAlgorithmException, InvalidKeySpecException { // mini header for data, 8 bytes ttl and data length if (buffer.readableBytes() < 4 + 4) return null; int ttl = buffer.readInt(); boolean protectedEntry = (ttl & 0x80000000) != 0; ttl &= 0x7FFFFFFF; int dateLength = buffer.readInt(); // if (buffer.readableBytes() < dateLength) return null; final Data data = createData( buffer.array(), buffer.arrayOffset() + buffer.readerIndex(), dateLength, ttl, protectedEntry, originator); buffer.skipBytes(dateLength); return data; }
public static void skipCompressedByteArray(DataInput in) throws IOException { int length = in.readInt(); if (length != -1) in.skipBytes(length); }
/** * Factory method for creating <tt>AttributeInfo</tt> structures. * * <p>An <tt>AttributeInfo</tt> of the appropriate subtype from the <tt>attributes</tt> package is * created unless the type of the attribute is unknown in which case an instance of * <tt>AttributeInfo</tt> is returned. * * <p> * * <p>Attributes are skipped if the environment variable <tt>SYSTEM_PROPERTY_SKIP_ATTRIBUTES</tt> * is set to true. * * @param in the <tt>DataInput</tt> from which to read the <tt>AttributeInfo</tt> structure * @param classFile the parent class file of the structure to be created * @return the new <tt>AttributeInfo</tt> structure * @throws InvalidByteCodeException if the byte code is invalid * @throws IOException if an exception occurs with the <tt>DataInput</tt> */ public static AttributeInfo createOrSkip(DataInput in, ClassFile classFile) throws InvalidByteCodeException, IOException { AttributeInfo attributeInfo = null; if (Boolean.getBoolean(SYSTEM_PROPERTY_SKIP_ATTRIBUTES)) { in.skipBytes(2); in.skipBytes(in.readInt()); } else { int attributeNameIndex = in.readUnsignedShort(); int attributeLength = in.readInt(); ConstantUtf8Info cpInfoName = classFile.getConstantPoolUtf8Entry(attributeNameIndex); String attributeName = null; if (cpInfoName == null) { return null; } attributeName = cpInfoName.getString(); if (ConstantValueAttribute.ATTRIBUTE_NAME.equals(attributeName)) { attributeInfo = new ConstantValueAttribute(); } else if (CodeAttribute.ATTRIBUTE_NAME.equals(attributeName)) { attributeInfo = new CodeAttribute(); } else if (ExceptionsAttribute.ATTRIBUTE_NAME.equals(attributeName)) { attributeInfo = new ExceptionsAttribute(); } else if (InnerClassesAttribute.ATTRIBUTE_NAME.equals(attributeName)) { attributeInfo = new InnerClassesAttribute(); } else if (SyntheticAttribute.ATTRIBUTE_NAME.equals(attributeName)) { attributeInfo = new SyntheticAttribute(); } else if (SourceFileAttribute.ATTRIBUTE_NAME.equals(attributeName)) { attributeInfo = new SourceFileAttribute(); } else if (LineNumberTableAttribute.ATTRIBUTE_NAME.equals(attributeName)) { attributeInfo = new LineNumberTableAttribute(); } else if (LocalVariableTableAttribute.ATTRIBUTE_NAME.equals(attributeName)) { attributeInfo = new LocalVariableTableAttribute(); } else if (DeprecatedAttribute.ATTRIBUTE_NAME.equals(attributeName)) { attributeInfo = new DeprecatedAttribute(); } else if (EnclosingMethodAttribute.ATTRIBUTE_NAME.equals(attributeName)) { attributeInfo = new EnclosingMethodAttribute(); } else if (SignatureAttribute.ATTRIBUTE_NAME.equals(attributeName)) { attributeInfo = new SignatureAttribute(); } else if (LocalVariableTypeTableAttribute.ATTRIBUTE_NAME.equals(attributeName)) { attributeInfo = new LocalVariableTypeTableAttribute(); } else if (RuntimeVisibleAnnotationsAttribute.ATTRIBUTE_NAME.equals(attributeName)) { attributeInfo = new RuntimeVisibleAnnotationsAttribute(); } else if (RuntimeInvisibleAnnotationsAttribute.ATTRIBUTE_NAME.equals(attributeName)) { attributeInfo = new RuntimeInvisibleAnnotationsAttribute(); } else if (AnnotationDefaultAttribute.ATTRIBUTE_NAME.equals(attributeName)) { attributeInfo = new AnnotationDefaultAttribute(); } else if (BootstrapMethodsAttribute.ATTRIBUTE_NAME.equals(attributeName)) { attributeInfo = new BootstrapMethodsAttribute(attributeLength); } else { attributeInfo = new AttributeInfo(attributeLength); } attributeInfo.setAttributeNameIndex(attributeNameIndex); attributeInfo.setClassFile(classFile); attributeInfo.read(in); } return attributeInfo; }