1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
package com.sap.dbtech.util;
/*
========== licence begin GPL
Copyright (C) 2002-2003 SAP AG
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
========== licence end
*/
import com.sap.dbtech.jdbc.ConnectionSapDB;
public abstract class GarbageCan {
protected int canTresholdC = 20;
protected boolean objPending = false;
protected boolean currentEmptyRun = false;
protected boolean currentEmptyRun2 = false;
public GarbageCan () {
this(20);
}
public GarbageCan (int aTreshhold) {
this.canTresholdC = aTreshhold;
}
public boolean isPending () {
if (getGarbageSize() >= canTresholdC) {
this.objPending = true;
}
else {
this.objPending = false;
}
return this.objPending;
}
final public void forceGarbageCollection(){
this.objPending = true;
}
final public void emptyCan (ConnectionSapDB conn) {
if(currentEmptyRun)
return;
currentEmptyRun=true;
com.sap.dbtech.jdbc.packet.RequestPacket requestPacket;
this.objPending = false;
while (this.getGarbageSize() > 0) {
try {
requestPacket = conn.getRequestPacket(false);
requestPacket.initializePacket(Short.MAX_VALUE);
emptyCan( requestPacket);
conn.execute(requestPacket, this, ConnectionSapDB.GC_NONE);
} catch (java.sql.SQLException ignore) { /* ignore */}
}
currentEmptyRun=false;
}
abstract public void emptyCan ();
abstract public void throwIntoGarbageCan (Object obj);
abstract protected int getGarbageSize();
abstract public boolean emptyCan(com.sap.dbtech.jdbc.packet.RequestPacket requestPacket);
}
|