📄 deathobjectbuffer.java
字号:
// You can redistribute this software and/or modify it under the terms of// the Ozone Core License version 1 published by ozone-db.org.//// The original code and portions created by SMB are// Copyright (C) 1997-2000 by SMB GmbH. All rights reserved.//// $Id: DeathObjectBuffer.java,v 1.5 2000/10/28 16:55:17 daniela Exp $package org.ozoneDB.core.classicStore;import org.ozoneDB.core.*;import org.ozoneDB.util.*;import org.ozoneDB.DxLib.*;public class DeathObjectBuffer extends Object { /** all objects ordered by their ObjectID */ public DxMap objects; /** head and tail of the double linked list */ DeathObject head; DeathObject tail; int bufferSize = 0; /** the constructor */ public DeathObjectBuffer() { objects = new DxHashMap(); head = new DeathObject(); tail = new DeathObject(); head.previous = tail; tail.next = head; } /** returns the current size of the buffer */ public final int size() { return bufferSize; } /** returns the current count of objects of the buffer */ public final int count() { return objects.count(); } /** */ public void updateSize( DeathObject obj, boolean sub ) { bufferSize += sub ? -obj.size() : obj.size(); } /** * adds the object to the bottom of the stack */ public boolean add( DeathObject obj ) { boolean result = objects.addForKey( obj, obj.objID() ); if (result) { popOnTop( obj ); bufferSize += obj.size(); } return result; } /** * removes the object from the stack */ public DeathObject remove( ObjectID oid ) { //env.logWriter.newEntry ("DeathObjectBuffer.remove: " + oid, LogWriter.DEBUG3); DeathObject obj = (DeathObject)objects.removeForKey( oid ); if (obj != null) { removeFromStack( obj ); bufferSize -= obj.size(); } return obj; } /** * moves the specified object to the top of the stack */ public boolean moveToTop( ObjectID oid ) { DeathObject obj = (DeathObject)objects.elementForKey( oid ); if (obj != null) { removeFromStack( obj ); popOnTop( obj ); } return obj != null; } /** * removes and returns the object at the bottom */ public DeathObject pushFromBottom() { DeathObject obj = tail.next; if (obj == head) { return null; } return remove( obj.objID() ); } /** * returns the DeathObject for the specified ObjectID */ public DeathObject objectForId( ObjectID oid ) { return (DeathObject)objects.elementForKey( oid ); } /** * pops the object on the top of the stack */ private void popOnTop( DeathObject obj ) { head.previous.next = obj; obj.previous = head.previous; obj.next = head; head.previous = obj; } /** * pops the object on the bottom of the stack */ private void popOnBottom( DeathObject obj ) { tail.next.previous = obj; obj.next = tail.next; obj.previous = tail; tail.next = obj; } /** * removes the object from the stack */ private void removeFromStack( DeathObject obj ) { obj.previous.next = obj.next; obj.next.previous = obj.previous; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -