001 package toolbus.atom.tool; 002 003 import toolbus.TBTermFactory; 004 import toolbus.TBTermVar; 005 import toolbus.atom.Atom; 006 import toolbus.atom.Ref; 007 import toolbus.exceptions.ToolBusException; 008 import toolbus.parsercup.PositionInformation; 009 import toolbus.process.ProcessExpression; 010 import toolbus.tool.ToolInstance; 011 import aterm.ATerm; 012 013 public class GetPerfStats extends Atom{ 014 private final Ref toolId; 015 private ToolInstance toolInstance; 016 017 public GetPerfStats(ATerm toolId, TBTermFactory tbfactory, PositionInformation posInfo){ 018 super(tbfactory, posInfo); 019 020 this.toolId = new Ref(toolId); 021 setAtomArgs(new Ref[]{this.toolId}); 022 externalNameAsReceivedByTool = "snd-perf-stats"; 023 } 024 025 public ProcessExpression copy(){ 026 Atom a = new GetPerfStats(toolId.value, tbfactory, getPosInfo()); 027 a.copyAtomAttributes(this); 028 029 return a; 030 } 031 032 public void activate(){ 033 toolInstance = null; 034 super.activate(); 035 } 036 037 public boolean execute() throws ToolBusException{ 038 if(!isEnabled()) return false; 039 040 if(toolInstance == null){ 041 ATerm tid = getEnv().getValue((TBTermVar) toolId.value); 042 toolInstance = getToolBus().getToolInstanceManager().get(tid); 043 if(toolInstance == null) return false; 044 } 045 046 if(toolInstance.tryDoEval()){ 047 toolInstance.sendPerformanceStatsRequest(tbfactory.makeList()); 048 //LoggerFactory.log(this.getProcess().getProcessName(), "Sending performace statistics request to tool: " + toolInstance.getToolKey(), IToolBusLoggerConstants.TOOLCOM); 049 return true; 050 } 051 return false; 052 } 053 }