/**
*
* Copyright (c) 2014, the Railo Company Ltd. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
**/
package lucee.runtime.debug;
import java.util.Iterator;
import java.util.LinkedList;
import lucee.commons.io.res.Resource;
import lucee.runtime.PageContext;
import lucee.runtime.config.ConfigWebImpl;
import lucee.runtime.exp.PageException;
import lucee.runtime.net.http.ReqRspUtil;
import lucee.runtime.op.Duplicator;
import lucee.runtime.type.Array;
import lucee.runtime.type.ArrayImpl;
import lucee.runtime.type.Struct;
public class DebuggerPool {
//private Resource storage;
private LinkedList<Struct> queue=new LinkedList<Struct>();
//private List<Debugger> list=new ArrayList<Debugger>();
public DebuggerPool(Resource storage) {
//this.storage=storage;
}
public synchronized void store(PageContext pc,Debugger debugger) {
if(ReqRspUtil.getScriptName(pc,pc.getHttpServletRequest()).indexOf("/lucee/")==0)return;
try {
queue.add((Struct) Duplicator.duplicate(debugger.getDebuggingData(pc, true),true));
} catch (PageException e) {}
while(queue.size()>((ConfigWebImpl)pc.getConfig()).getDebugMaxRecordsLogged())
queue.poll();
}
public Array getData(PageContext pc) {
Iterator<Struct> it = queue.iterator();
Array arr=new ArrayImpl();
while(it.hasNext()){
arr.appendEL(it.next());
}
return arr;
}
}