@Override public int read(ByteBuffer bytes) throws Exception { return this.sequentialFile.read(bytes); }
@Override public int read(ByteBuffer bytes, IOCallback callback) throws Exception { return this.sequentialFile.read(bytes, callback); }
@Override public int read(ByteBuffer bytes, IOCallback callback) throws Exception { return this.sequentialFile.read(bytes, callback); }
@Override public int read(ByteBuffer bytes) throws Exception { return this.sequentialFile.read(bytes); }
@Override public int encode(final ByteBuffer bufferRead) throws ActiveMQException { try { return cFile.read(bufferRead); } catch (Exception e) { throw new ActiveMQInternalErrorException(e.getMessage(), e); } }
private ActiveMQBuffer readActiveMQBuffer(SequentialFile file, int size) throws Exception { ByteBuffer byteBuffer = ByteBuffer.allocate(size); byteBuffer.mark(); file.read(byteBuffer); byteBuffer.reset(); ActiveMQBuffer buffer = ActiveMQBuffers.wrappedBuffer(byteBuffer); buffer.writerIndex(size); return buffer; } }
@Override public ActiveMQBuffer getReadOnlyBodyBuffer() { try { validateFile(); file.open(); int fileSize = (int) file.size(); ByteBuffer buffer = ByteBuffer.allocate(fileSize); file.read(buffer); return new ChannelBufferWrapper(Unpooled.wrappedBuffer(buffer)); } catch (Exception e) { throw new RuntimeException(e); } finally { try { file.close(); } catch (Exception ignored) { } } }
private void readFromSequentialFile(StorageManager storage, List<PagedMessage> messages) throws Exception { final int fileSize = (int) file.size(); //doesn't need to be a direct buffer: that case is covered using the MMAP read final ByteBuffer buffer = this.fileFactory.newBuffer(fileSize); try { file.position(0); file.read(buffer); buffer.rewind(); assert (buffer.limit() == fileSize) : "buffer doesn't contains the whole file"; ChannelBufferWrapper activeMQBuffer = wrapBuffer(fileSize, buffer); read(storage, activeMQBuffer, messages); } finally { this.fileFactory.releaseBuffer(buffer); } }
/** * @param file * @return * @throws Exception */ private JournalFileImpl readFileHeader(final SequentialFile file) throws Exception { ByteBuffer bb = fileFactory.newBuffer(JournalImpl.SIZE_HEADER); file.read(bb); int journalVersion = bb.getInt(); if (journalVersion != JournalImpl.FORMAT_VERSION) { boolean isCompatible = false; for (int v : JournalImpl.COMPATIBLE_VERSIONS) { if (v == journalVersion) { isCompatible = true; } } if (!isCompatible) { throw ActiveMQJournalBundle.BUNDLE.journalFileMisMatch(); } } int readUserVersion = bb.getInt(); if (readUserVersion != userVersion) { throw ActiveMQJournalBundle.BUNDLE.journalDifferentVersion(); } long fileID = bb.getLong(); fileFactory.releaseBuffer(bb); bb = null; return new JournalFileImpl(file, fileID, journalVersion); }
/** * @param file * @return * @throws Exception */ private JournalFileImpl readFileHeader(final SequentialFile file) throws Exception { ByteBuffer bb = fileFactory.newBuffer(JournalImpl.SIZE_HEADER); file.read(bb); int journalVersion = bb.getInt(); if (journalVersion != JournalImpl.FORMAT_VERSION) { boolean isCompatible = false; for (int v : JournalImpl.COMPATIBLE_VERSIONS) { if (v == journalVersion) { isCompatible = true; } } if (!isCompatible) { throw ActiveMQJournalBundle.BUNDLE.journalFileMisMatch(); } } int readUserVersion = bb.getInt(); if (readUserVersion != userVersion) { throw ActiveMQJournalBundle.BUNDLE.journalDifferentVersion(); } long fileID = bb.getLong(); fileFactory.releaseBuffer(bb); bb = null; return new JournalFileImpl(file, fileID, journalVersion); }
@Override public void run() { try { SequentialFile file = factory.createSequentialFile("file.txt"); file.open(); file.write(fakeEncoding, true); file.position(0); ByteBuffer readBytes = ByteBuffer.allocate(fakeEncoding.getEncodeSize()); Thread.currentThread().interrupt(); file.read(readBytes); file.close(); } catch (Exception e) { e.printStackTrace(); } } };
@Override public void run() { try { SequentialFile file = factory.createSequentialFile("file.txt"); file.open(); file.write(fakeEncoding, true); file.position(0); ByteBuffer readBytes = ByteBuffer.allocate(fakeEncoding.getEncodeSize()); Thread.currentThread().interrupt(); file.read(readBytes); file.close(); } catch (Exception e) { e.printStackTrace(); } } };
protected void checkFill(final SequentialFile file, final int size) throws Exception { file.fill(size); file.close(); file.open(); file.position(0); ByteBuffer bb = ByteBuffer.allocateDirect(size); int bytesRead = file.read(bb); Assert.assertEquals(size, bytesRead); bb.rewind(); byte[] bytes = new byte[size]; bb.get(bytes); for (int i = 0; i < size; i++) { // log.debug(" i is " + i); Assert.assertEquals(0, bytes[i]); } }
@Test public void testBasicAlignment() throws Exception { FakeSequentialFileFactory factory = new FakeSequentialFileFactory(200, true); SequentialFile file = factory.createSequentialFile("test1"); file.open(); try { ByteBuffer buffer = ByteBuffer.allocateDirect(200); for (int i = 0; i < 200; i++) { buffer.put(i, (byte) 1); } file.writeDirect(buffer, true); buffer = ByteBuffer.allocate(400); for (int i = 0; i < 400; i++) { buffer.put(i, (byte) 2); } file.writeDirect(buffer, true); buffer = ByteBuffer.allocate(600); file.position(0); file.read(buffer); for (int i = 0; i < 200; i++) { Assert.assertEquals((byte) 1, buffer.get(i)); } for (int i = 201; i < 600; i++) { Assert.assertEquals("Position " + i, (byte) 2, buffer.get(i)); } } catch (Exception ignored) { } }
int bytesRead = from.read(buffer);
file.read(buffer);
protected void checkFill(final SequentialFileFactory factory, final SequentialFile file, final int size) throws Exception { file.fill(size); file.close(); file.open(); file.position(0); ByteBuffer bb = factory.newBuffer(size); int bytesRead = file.read(bb); Assert.assertEquals(calculateRecordSize(size, factory.getAlignment()), bytesRead); for (int i = 0; i < size; i++) { // log.debug(" i is " + i); Assert.assertEquals(0, bb.get(i)); } }
file.read(buffer);
file.read(buffer);
file.read(buffer);