/*******************************************************************************
* Copyright (c) 2011, 2016 Eurotech and/or its affiliates
*
* 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:
* Eurotech
*******************************************************************************/
package org.eclipse.kura.watchdog;
/**
* CriticalComponent is an interface that can be used to denote a component of functionality that is
* 'critical' to the nature of the system. If a component implements CriticalComponent then it must
* state its name as well as its criticalComponentTimeout. The name is a unique identifier in the
* system. The timeout is a length of time in milliseconds that the CriticalComponent must check in
* with the {@link WatchdogService}. If the CriticalComponent goes for a time period of greater
* than this timeout, based on the (@link WatchdogService } configuration it will perform some action
* (such as rebooting the system).
*
*/
public interface CriticalComponent {
/**
* The unique identifier for this CriticalComponent
*
* @return a identifier unique to the {@link WatchdogService }
*/
public String getCriticalComponentName();
/**
* The maximum amount of time in milliseconds that the CriticalComponent should check in
* with the {@link WatchdogService} before the WatchdogService reboots the device.
*
* @return the timeout in milliseconds
*/
public int getCriticalComponentTimeout();
}