001    package railo.runtime.functions.system;
002    
003    import railo.commons.io.SystemUtil;
004    import railo.commons.lang.StringUtil;
005    import railo.runtime.PageContext;
006    import railo.runtime.exp.FunctionException;
007    import railo.runtime.exp.PageException;
008    import railo.runtime.ext.function.Function;
009    import railo.runtime.type.Query;
010    
011    public final class GetMemoryUsage implements Function {
012        
013            private static final long serialVersionUID = -7937791531186794443L;
014    
015            public static Query call(PageContext pc) throws PageException {
016            return call(pc, null);
017        }
018            public static Query call(PageContext pc,String type) throws PageException {
019                    if(StringUtil.isEmpty(type))
020                            return SystemUtil.getMemoryUsageAsQuery(SystemUtil.MEMORY_TYPE_ALL);
021                    
022                    type=type.trim().toLowerCase();
023                    if("heap".equalsIgnoreCase(type))
024                            return SystemUtil.getMemoryUsageAsQuery(SystemUtil.MEMORY_TYPE_HEAP);
025                    if("non_heap".equalsIgnoreCase(type) || "nonheap".equalsIgnoreCase(type) || "non-heap".equalsIgnoreCase(type) ||
026                                    "none_heap".equalsIgnoreCase(type) || "noneheap".equalsIgnoreCase(type) || "none-heap".equalsIgnoreCase(type))
027                                    return SystemUtil.getMemoryUsageAsQuery(SystemUtil.MEMORY_TYPE_NON_HEAP);
028            
029                    throw new FunctionException(pc, "GetMemoryUsage", 1, "type", "invalid value ["+type+"], valid values are [heap,non_heap]");
030        }
031    }