blob: 102d041ed290ec24c3394ae0864bb372786c8ad8 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional information regarding
* copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License. You may obtain a
* copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package org.apache.geode.admin.jmx.internal;
import org.apache.geode.internal.admin.GemFireVM;
import org.apache.geode.internal.admin.StatAlert;
import org.apache.geode.internal.admin.StatAlertDefinition;
/**
* This interface represents an Aggregator entity and resides in JMXAgent. Responsibilities are as
* follows:
* <ol>
* <li>set AlertsManager in the newly joined members
* <li>create/update/remove alert
* <li>manage refresh interval
* <li>process notification from members
* <li>Aggregate stats & make available for clients thro' JMXAgent
* </ol>
*
*/
public interface StatAlertsAggregator {
/**
* This method can be used to get an alert definition.
*
* @param alertDefinition StatAlertDefinition to retrieve
*/
StatAlertDefinition getAlertDefinition(StatAlertDefinition alertDefinition);
/**
* This method can be used to retrieve all available stat alert definitions.
*
* @return An array of all available StatAlertDefinition objects
*/
StatAlertDefinition[] getAllStatAlertDefinitions();
/**
* This method can be used to update alert definition for the Stat mentioned. This method should
* update the collection maintained at the aggregator and should notify members for the newly
* added alert definitions.
* <p>
* A new alert definition will be created if matching one not found.
*
* @param alertDefinition alertDefinition to be updated
*/
void updateAlertDefinition(StatAlertDefinition alertDefinition);
/**
* This method can be used to remove alert definition for the Stat mentioned.
* <p>
* This method should update the collection maintained at the aggregator and should notify members
* for the newly added alert definitions.
*
* @param defId id of the alert definition to be removed
*/
void removeAlertDefinition(Integer defId);
/**
* Convenience method to check whether an alert definition is created.
*
* @param alert alert definition to check whether already created
* @return true if the alert definition is already created, false otherwise
*/
boolean isAlertDefinitionCreated(StatAlertDefinition alert);
/**
* This method can be used to set the AlertManager for the newly joined member VM.
*
* @param memberVM Member VM to set AlertsManager for
*/
void setAlertsManager(GemFireVM memberVM);
/**
* Returns the refresh interval for the Stats in seconds.
*
* @return refresh interval for the Stats(in seconds)
*/
int getRefreshIntervalForStatAlerts();
/**
* This method is used to set the refresh interval for the Stats Alerts in seconds
*
* @param refreshInterval refresh interval for the Stats(in seconds)
*/
void setRefreshIntervalForStatAlerts(int refreshInterval);
/**
* This method can be used to process the notifications sent by the member(s). Actual aggregation
* of stats can occur here. The array contains alert objects with alert def. ID & value.
* AlertHelper class can be used to retrieve the corresponding alert definition.
*
* @param alerts array of Alert class(contains alert def. ID & value)
*/
void processNotifications(StatAlert[] alerts, GemFireVM remoteVM);
void processSystemwideNotifications();
}