2012-01-19 12:19:56 -08:00
|
|
|
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
|
2012-05-21 04:12:37 -07:00
|
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
2012-01-19 12:19:56 -08:00
|
|
|
|
|
|
|
package org.mozilla.gecko.sqlite;
|
|
|
|
|
|
|
|
import java.io.IOException;
|
2012-07-27 17:53:54 -07:00
|
|
|
import java.io.InputStream;
|
2012-01-19 12:19:56 -08:00
|
|
|
import java.nio.ByteBuffer;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Helper class to make the ByteBuffers returned by SQLite BLOB
|
|
|
|
* easier to use.
|
|
|
|
*/
|
2012-07-17 17:54:54 -07:00
|
|
|
public class ByteBufferInputStream extends InputStream {
|
2012-01-19 12:19:56 -08:00
|
|
|
private ByteBuffer mByteBuffer;
|
|
|
|
|
|
|
|
public ByteBufferInputStream(ByteBuffer aByteBuffer) {
|
|
|
|
mByteBuffer = aByteBuffer;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public synchronized int read() throws IOException {
|
|
|
|
if (!mByteBuffer.hasRemaining()) {
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
return mByteBuffer.get();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public synchronized int read(byte[] aBytes, int aOffset, int aLen)
|
|
|
|
throws IOException {
|
|
|
|
int toRead = Math.min(aLen, mByteBuffer.remaining());
|
|
|
|
mByteBuffer.get(aBytes, aOffset, toRead);
|
|
|
|
return toRead;
|
|
|
|
}
|
|
|
|
}
|