/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.monitoring.system.api; /** * Exception class representing monitoring failures. * * @author David Scholz * @author Robert Mischke (adapted for remote usage/reconstruction) */ public class OperatingSystemException extends Exception { private static final long serialVersionUID = -3136170788474556276L; private final ErrorType errorType; // for client-side reconstruction after remote exception throw public OperatingSystemException(String message) { super(message); this.errorType = null; // not available in remote case } public OperatingSystemException(ErrorType errorType) { super(errorType.getMessage()); this.errorType = errorType; } public OperatingSystemException(ErrorType errorType, String message) { super(errorType.getMessage() + ": " + message); this.errorType = errorType; } /** * @return the {@link ErrorType} passed to the constructor; note that this method MUST NOT be used if the exception was received from a * remote instance - if it is, an {@link IllegalStateException} is thrown */ public ErrorType getErrorType() { if (errorType == null) { throw new IllegalStateException("Error type requested, but none is available; " + "was this method called on a different instance than the one throwing the exception?"); } return errorType; } /** * * Error codes. * * @author David Scholz */ public enum ErrorType { /** * No such process error. */ NO_SUCH_PROCESS("No such process"), /** * Error if getting cpu usage of a specific process fails. */ FAILED_TO_GATHER_CPU_PROCESS_USAGE("Failed to get CPU usage"), /** * Error if getting idle fails. */ FAILED_TO_GATHER_IDLE("Failed to get idle"), /** * Error if getting total cpu usage fails. */ FAILED_TO_GATHER_TOTAL_CPU_USAGE("Failed to get total CPU usage"), /** * Error if getting ram usage of a specific process fails. */ FAILED_TO_GATHER_RAM_PROCESS_USAGE("Failed to get RAM usage"), /** * Error if getting total ram usage fails. */ FAILED_TO_GATHER_TOTAL_RAM_USAGE("Failed to get total RAM usage"), /** * Error if getting total system ram fails. */ FAILED_TO_GATHER_TOTAL_RAM("Failed to get total RAM"), /** * Error if getting total ram percentage fails. */ FAILED_TO_GATHER_TOTAL_RAM_PERCENTAGE("Failed to get total RAM percentage"), /** * Error if getting ram percentage of specific process fails. */ FAILED_TO_GATHER_RAM_PROCESS_PERCENTAGE("Failed to get RAM percentage"), /** * Error if user does not have the proper rights to get access to the process. */ ACCESS_DENIED("Access is denied"), /** * Error if getting process list fails. */ FAILED_TO_GET_PROCESS_LIST("Failed to get process list"), /** * Error if getting cpu list fails. */ FAILED_TO_GET_CPU_LIST("Failed to get cpu core count"), /** * Error if getting process state fails. */ FAILED_TO_GET_PROCESS_STATE("Failed to get process state"), /** * Error if getting children fails. */ FAILED_TO_GET_CHILD_PROCESS_LIST("Failed to get child process list"), /** * Error if killing process fails. */ FAILED_TO_KILL_PROCESS("Failed to kill process"), /** * Error if getting file system information fails. */ FAILED_TO_GET_FILE_SYSTEM("Failed to get file system information"), /** * Error if getting file system usage fails. */ FAILED_TO_GET_FILE_SYSTEM_USAGE("Failed to get file system usage"); private final String message; ErrorType(String message) { this.message = message; } public String getMessage() { return message; } @Override public String toString() { return message; } } }