@Override protected ChannelBuffer read(int fd, long position, int length) throws IOException, XrootdException { if (fd < 0 || fd >= descriptors.size() || descriptors.get(fd) == null) { throw new XrootdException(kXR_FileNotOpen, "Invalid file descriptor"); } FileDescriptor descriptor = descriptors.get(fd); byte[] chunkArray = new byte[length]; ByteBuffer chunk = ByteBuffer.wrap(chunkArray); descriptor.read(chunk, position); return wrappedBuffer(chunkArray, 0, chunkArray.length - chunk.remaining()); }
protected void read(Map<Integer, ByteBuffer> tags) { super.read(tags); for (Iterator<Entry<Integer, ByteBuffer>> it = tags.entrySet().iterator(); it.hasNext(); ) { Entry<Integer, ByteBuffer> entry = it.next(); ByteBuffer _bb = entry.getValue(); switch (entry.getKey()) { case 0x3215: signalStandard = _bb.get(); break; case 0x320c: frameLayout = LayoutType.values()[_bb.get()]; break; case 0x3203: storedWidth = _bb.getInt(); break; case 0x3202: storedHeight = _bb.getInt(); break; case 0x3216: storedF2Offset = _bb.getInt(); break; case 0x3205: sampledWidth = _bb.getInt(); break; case 0x3204: sampledHeight = _bb.getInt(); break; case 0x3206: sampledXOffset = _bb.getInt(); break; case 0x3207: sampledYOffset = _bb.getInt(); break; case 0x3208: displayHeight = _bb.getInt(); break; case 0x3209: displayWidth = _bb.getInt(); break; case 0x320a: displayXOffset = _bb.getInt(); break; case 0x320b: displayYOffset = _bb.getInt(); break; case 0x3217: displayF2Offset = _bb.getInt(); break; case 0x320e: aspectRatio = new Rational(_bb.getInt(), _bb.getInt()); break; case 0x3218: activeFormatDescriptor = _bb.get(); break; case 0x320d: videoLineMap = readInt32Batch(_bb); break; case 0x320f: alphaTransparency = _bb.get(); break; case 0x3210: transferCharacteristic = UL.read(_bb); break; case 0x3211: imageAlignmentOffset = _bb.getInt(); break; case 0x3213: imageStartOffset = _bb.getInt(); break; case 0x3214: imageEndOffset = _bb.getInt(); break; case 0x3212: fieldDominance = _bb.get(); break; case 0x3201: pictureEssenceCoding = UL.read(_bb); break; case 0x321a: codingEquations = UL.read(_bb); break; case 0x3219: colorPrimaries = UL.read(_bb); break; default: Logger.warn(String.format("Unknown tag [ " + ul + "]: %04x", entry.getKey())); continue; } it.remove(); } }