/*
* ProActive Parallel Suite(TM):
* The Open Source library for parallel and distributed
* Workflows & Scheduling, Orchestration, Cloud Automation
* and Big Data Analysis on Enterprise Grids & Clouds.
*
* Copyright (c) 2007 - 2017 ActiveEon
* Contact: contact@activeeon.com
*
* This library is free software: you can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation: version 3 of
* the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* If needed, contact us to obtain a release under GPL Version 2 or 3
* or a different license than the AGPL.
*/
package org.ow2.proactive.resourcemanager.frontend;
import org.objectweb.proactive.annotation.PublicAPI;
import org.ow2.proactive.resourcemanager.common.event.RMEventType;
import org.ow2.proactive.resourcemanager.common.event.RMInitialState;
import org.ow2.proactive.resourcemanager.exception.RMException;
/**
* An interface Front-End for the Monitoring of the Resource Manager.
* This interface provides a way for a monitor to ask at
* Resource Manager to throw events
* generated by nodes and nodes sources management.
*
* @see org.ow2.proactive.resourcemanager.frontend.RMEventListener
* @author The ProActive Team
* @since ProActive Scheduling 0.9
*/
@PublicAPI
public interface RMMonitoring {
/**
* ping the RM
*
* @return true if the RM is still alive
*/
@Deprecated
boolean isAlive();
/** Register a new Resource manager listener.
* Way to a monitor object to ask at RMMonitoring to throw
* RM events to it.
* @param listener a listener object which implements {@link RMEventListener}
* interface.
* @param events list of wanted events that must be received.
* @return RMInitialState snapshot of RM's current state : nodes and node sources.
*/
RMInitialState addRMEventListener(RMEventListener listener, RMEventType... events);
/**
* Removes a listener from RMMonitoring. Only listener itself must call this method
*/
void removeRMEventListener() throws RMException;
/**
* Gets the current snapshot of the resource manager state providing
* detailed nodes and node source information.
*
* To obtain summary of the resource manager state use {@link ResourceManager}.getState()
*
* @return the current state of the resource manager
*/
RMInitialState getState();
}