private void syncAndClose(Bin bin) { try { bin.sync(); } finally { bin.close(); } }
private void writeToLockFile(int lockSignal) { ByteArrayBuffer lockBuffer = newLockFileBuffer(); lockBuffer.writeInt(lockSignal); lockBuffer.writeInt(lockSignal); write(_lockFile, lockBuffer); _lockFile.sync(); }
@Override public void applySlotChanges( Visitable<SlotChange> slotChangeTree, int slotChangeCount, Slot reservedSlot) { if (slotChangeCount < 1) { return; } Runnable commitHook = _container.commitHook(); flushDatabaseFile(); ensureLogAndLock(); int length = transactionLogSlotLength(slotChangeCount); ByteArrayBuffer logBuffer = new ByteArrayBuffer(length); logBuffer.writeInt(length); logBuffer.writeInt(slotChangeCount); appendSlotChanges(logBuffer, slotChangeTree); write(_logFile, logBuffer); _logFile.sync(); writeToLockFile(LOCK_INT); writeSlots(slotChangeTree); commitHook.run(); flushDatabaseFile(); writeToLockFile(0); }
private void write(Bin storage, ByteArrayBuffer buffer) { storage.write(0, buffer._buffer, buffer.length()); }
private void read(Bin storage, ByteArrayBuffer buffer) { storage.read(0, buffer._buffer, buffer.length()); }