return new DirectBinaryDecoder(in); } else { return ((DirectBinaryDecoder)reuse).configure(in);
@Override public float readFloat() throws IOException { doReadBytes(buf, 0, 4); int n = (((int) buf[0]) & 0xff) | ((((int) buf[1]) & 0xff) << 8) | ((((int) buf[2]) & 0xff) << 16) | ((((int) buf[3]) & 0xff) << 24); return Float.intBitsToFloat(n); }
@Override public ByteBuffer readBytes(ByteBuffer old) throws IOException { int length = readInt(); return byteReader.read(old, length); }
@Test public void testReuse() throws IOException { ByteBufferOutputStream bbo1 = new ByteBufferOutputStream(); ByteBufferOutputStream bbo2 = new ByteBufferOutputStream(); byte[] b1 = new byte[] { 1, 2 }; BinaryEncoder e1 = e_factory.binaryEncoder(bbo1, null); e1.writeBytes(b1); e1.flush(); BinaryEncoder e2 = e_factory.binaryEncoder(bbo2, null); e2.writeBytes(b1); e2.flush(); DirectBinaryDecoder d = new DirectBinaryDecoder( new ByteBufferInputStream(bbo1.getBufferList())); ByteBuffer bb1 = d.readBytes(null); Assert.assertEquals(b1.length, bb1.limit() - bb1.position()); d.configure(new ByteBufferInputStream(bbo2.getBufferList())); ByteBuffer bb2 = d.readBytes(null); Assert.assertEquals(b1.length, bb2.limit() - bb2.position()); }
if (null == reuse) { if (preferDirect) { return new DirectBinaryDecoder(in); } else { return new BinaryDecoder(binaryDecoderBufferSize, in); ((DirectBinaryDecoder)reuse).init(in); return reuse; } else { return new DirectBinaryDecoder(in);
DirectBinaryDecoder(InputStream in) { super(); configure(in); }
if (null == reuse) { if (preferDirect) { return new DirectBinaryDecoder(in); } else { return new BinaryDecoder(binaryDecoderBufferSize, in); ((DirectBinaryDecoder)reuse).init(in); return reuse; } else { return new DirectBinaryDecoder(in);
DirectBinaryDecoder(InputStream in) { super(); configure(in); }
@Override public float readFloat() throws IOException { doReadBytes(buf, 0, 4); int n = (((int) buf[0]) & 0xff) | ((((int) buf[1]) & 0xff) << 8) | ((((int) buf[2]) & 0xff) << 16) | ((((int) buf[3]) & 0xff) << 24); return Float.intBitsToFloat(n); }
return new DirectBinaryDecoder(in); } else { return ((DirectBinaryDecoder)reuse).configure(in);
@Override public ByteBuffer readBytes(ByteBuffer old) throws IOException { int length = readInt(); return byteReader.read(old, length); }
DirectBinaryDecoder(InputStream in) { super(); configure(in); }
@Override public double readDouble() throws IOException { doReadBytes(buf, 0, 8); long n = (((long) buf[0]) & 0xff) | ((((long) buf[1]) & 0xff) << 8) | ((((long) buf[2]) & 0xff) << 16) | ((((long) buf[3]) & 0xff) << 24) | ((((long) buf[4]) & 0xff) << 32) | ((((long) buf[5]) & 0xff) << 40) | ((((long) buf[6]) & 0xff) << 48) | ((((long) buf[7]) & 0xff) << 56); return Double.longBitsToDouble(n); }
return new DirectBinaryDecoder(in); } else { return ((DirectBinaryDecoder)reuse).configure(in);
@Override public ByteBuffer readBytes(ByteBuffer old) throws IOException { int length = readInt(); return byteReader.read(old, length); }
DirectBinaryDecoder(InputStream in) { super(); configure(in); }
@Override public double readDouble() throws IOException { doReadBytes(buf, 0, 8); long n = (((long) buf[0]) & 0xff) | ((((long) buf[1]) & 0xff) << 8) | ((((long) buf[2]) & 0xff) << 16) | ((((long) buf[3]) & 0xff) << 24) | ((((long) buf[4]) & 0xff) << 32) | ((((long) buf[5]) & 0xff) << 40) | ((((long) buf[6]) & 0xff) << 48) | ((((long) buf[7]) & 0xff) << 56); return Double.longBitsToDouble(n); }
return new DirectBinaryDecoder(in); } else { return ((DirectBinaryDecoder)reuse).configure(in);
@Override public ByteBuffer readBytes(ByteBuffer old) throws IOException { int length = readInt(); return byteReader.read(old, length); }
public ByteBuffer read(ByteBuffer old, int length) throws IOException { ByteBuffer result; if (old != null && length <= old.capacity()) { result = old; result.clear(); } else { result = ByteBuffer.allocate(length); } doReadBytes(result.array(), result.position(), length); result.limit(length); return result; } }