/*******************************************************************************
* Copyright (c) 2012-2017 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.ide.processes.monitoring;
import com.google.inject.Singleton;
import java.util.HashMap;
import java.util.Map;
/**
* Manages and provides widgets for displaying CPU, memory and disk usages for the machines.
*
* @author Vitaliy Guliy
*/
@Singleton
public class MachineMonitors {
private Map<String, Map<Object, MonitorWidget>> monitorWidgets = new HashMap<>();
/**
* Creates new or returns existed widget for the given machine and referrer.
* Referrer is an UI object containing monitor widgets attached as children.
*
* @param machineID
* machines ID
* @param referrer
* referrer object
* @return
* monitor widget
*/
public MonitorWidget getMonitorWidget(String machineID, Object referrer) {
Map<Object, MonitorWidget> widgets = monitorWidgets.get(machineID);
if (widgets == null) {
widgets = new HashMap<>();
monitorWidgets.put(machineID, widgets);
}
MonitorWidget widget = widgets.get(referrer);
if (widget == null) {
widget = new MonitorWidget();
widgets.put(referrer, widget);
}
return widget;
}
/**
* Sets new CPU usage value for machine with given ID.
*
* @param machineID
* machine ID
* @param cpuUsage
* new cpu usage
*/
public void setCpuUsage(String machineID, int cpuUsage) {
Map<Object, MonitorWidget> widgets = monitorWidgets.get(machineID);
if (widgets != null) {
for (MonitorWidget widget : widgets.values()) {
widget.setCpuUsage(cpuUsage);
}
}
}
/**
* Sets new memory usage value for machine with given ID.
*
* @param machineID
* machine ID
* @param mem
* new memory usage
* @param max
* maximum amount of memory
*/
public void setMemoryUsage(String machineID, int mem, int max) {
Map<Object, MonitorWidget> widgets = monitorWidgets.get(machineID);
if (widgets != null) {
for (MonitorWidget widget : widgets.values()) {
widget.setMemoryUsage(mem, max);
}
}
}
/**
* Sets new disk usage value for machine with given ID.
*
* @param machineID
* machine ID
* @param disk
* new disk usage
* @param max
* maximum amount of disk space
*/
public void setDiskUsage(String machineID, int disk, int max) {
Map<Object, MonitorWidget> widgets = monitorWidgets.get(machineID);
if (widgets != null) {
for (MonitorWidget widget : widgets.values()) {
widget.setDiskUsage(disk, max);
}
}
}
}