@Override public void sync() throws IOException { final SimpleWaitIOCallback callback = new SimpleWaitIOCallback(); executor.execute(callback::done); try { callback.waitCompletion(); } catch (Exception e) { callback.onError(ActiveMQExceptionType.IO_ERROR.getCode(), "Error during JDBC file sync."); fileFactory.onIOError(e, "Error during JDBC file sync.", this); } }
@Override public void blockingWriteDirect(ByteBuffer bytes,boolean sync, boolean releaseBuffer) throws Exception { if (logger.isTraceEnabled()) { logger.trace("Write Direct, Sync: true File: " + getFileName()); } final SimpleWaitIOCallback completion = new SimpleWaitIOCallback(); try { checkOpened(); } catch (Exception e) { ActiveMQJournalLogger.LOGGER.warn(e.getMessage(), e); completion.onError(-1, e.getMessage()); return; } final int bytesToWrite = factory.calculateBlockSize(bytes.limit()); final long positionToWrite = position.getAndAdd(bytesToWrite); final AIOSequentialFileFactory.AIOSequentialCallback runnableCallback = getCallback(completion, bytes, releaseBuffer); runnableCallback.initWrite(positionToWrite, bytesToWrite); runnableCallback.run(); completion.waitCompletion(); }
@Override public void blockingWriteDirect(ByteBuffer bytes,boolean sync, boolean releaseBuffer) throws Exception { if (logger.isTraceEnabled()) { logger.trace("Write Direct, Sync: true File: " + getFileName()); } final SimpleWaitIOCallback completion = new SimpleWaitIOCallback(); try { checkOpened(); } catch (Exception e) { ActiveMQJournalLogger.LOGGER.warn(e.getMessage(), e); completion.onError(-1, e.getMessage()); return; } final int bytesToWrite = factory.calculateBlockSize(bytes.limit()); final long positionToWrite = position.getAndAdd(bytesToWrite); final AIOSequentialFileFactory.AIOSequentialCallback runnableCallback = getCallback(completion, bytes, releaseBuffer); runnableCallback.initWrite(positionToWrite, bytesToWrite); runnableCallback.run(); completion.waitCompletion(); }
@Override public void writeDirect(ByteBuffer bytes, boolean sync, IOCallback callback) { if (callback == null) { SimpleWaitIOCallback waitIOCallback = new SimpleWaitIOCallback(); try { scheduleWrite(bytes, waitIOCallback); waitIOCallback.waitCompletion(); } catch (Exception e) { waitIOCallback.onError(ActiveMQExceptionType.IO_ERROR.getCode(), "Error writing to JDBC file."); fileFactory.onIOError(e, "Failed to write to file.", this); } } else { scheduleWrite(bytes, callback); } }