/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.monitoring.system.api;
import de.rcenvironment.core.monitoring.system.api.model.FullSystemAndProcessDataSnapshot;
import de.rcenvironment.core.monitoring.system.api.model.SystemLoadInformation;
import de.rcenvironment.core.utils.common.rpc.RemotableService;
import de.rcenvironment.core.utils.common.rpc.RemoteOperationException;
/**
* {@link RemotableService} interface for fetching system monitoring data from the local or other instances.
*
* @author David Scholz
* @author Robert Mischke
*/
@RemotableService
public interface RemotableSystemMonitoringService {
/**
* Get a {@link FullSystemAndProcessDataSnapshot} which contains all system resource informations at once. This limits network traffic.
*
* @return {@link FullSystemAndProcessDataSnapshot}.
* @throws OperatingSystemException if getting {@link FullSystemAndProcessDataSnapshot} fails.
* @throws RemoteOperationException standard remote service call exception
*/
FullSystemAndProcessDataSnapshot getCompleteSnapshot() throws OperatingSystemException, RemoteOperationException;
/**
* Retrieves lightweight system load information. Currently, this consists of the latest observed CPU load percentage, the average of a
* certain number of most recent CPU load values, and the most recent free/available RAM value.
*
* @param maxSamples the maximum number of samples to include in the CPU load average; the current polling interval is 1 second
* @return an immutable system load information holder
* @throws RemoteOperationException standard remote service call exception
*/
SystemLoadInformation getSystemLoadInformation(Integer maxSamples) throws RemoteOperationException;
}