package org.fastcatsearch.http.action.management.common;
import java.io.Writer;
import org.fastcatsearch.http.ActionMapping;
import org.fastcatsearch.http.action.ActionRequest;
import org.fastcatsearch.http.action.ActionResponse;
import org.fastcatsearch.http.action.AuthAction;
import org.fastcatsearch.management.JvmCpuInfo;
import org.fastcatsearch.management.JvmMemoryInfo;
import org.fastcatsearch.management.SystemWatchService;
import org.fastcatsearch.service.ServiceManager;
import org.fastcatsearch.util.ResponseWriter;
@ActionMapping("/management/common/system-usage")
public class GetSystemUsageAction extends AuthAction {
@Override
public void doAuthAction(ActionRequest request, ActionResponse response) throws Exception {
SystemWatchService managementInfoService = ServiceManager.getInstance().getService(SystemWatchService.class);
JvmCpuInfo jvmCpuInfo = managementInfoService.getJvmCpuInfo();
JvmMemoryInfo jvmMemoryInfo = managementInfoService.getJvmMemoryInfo();
Writer writer = response.getWriter();
ResponseWriter resultWriter = getDefaultResponseWriter(writer);
resultWriter.object()
.key("cpu")
.object()
.key("jvm").value(jvmCpuInfo.jvmCpuUse)
.key("system").value(jvmCpuInfo.systemCpuUse)
.key("loadAvg").value(jvmCpuInfo.systemLoadAverage)
.endObject()
.key("memory")
.object()
.key("max").value(jvmMemoryInfo.maxHeapMemory + jvmMemoryInfo.maxNonHeapMemory)
.key("used").value(jvmMemoryInfo.usedHeapMemory + jvmMemoryInfo.usedNonHeapMemory)
.endObject()
.endObject();
resultWriter.done();
}
}