text: /*
   * Licensed to Elasticsearch under one or more contributor
   * license agreements. See the NOTICE file distributed with
   * this work for additional information regarding copyright
   * ownership. Elasticsearch 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.elasticsearch.cluster;
  
  import java.util.function.Consumer;
  
  /**
   * Interface for a class used to gather information about a cluster periodically.
   */
  @FunctionalInterface
  public interface ClusterInfoService {
  
      /**
       * @return the latest cluster information
       */
      ClusterInfo getClusterInfo();
  
      /**
       * Add a listener for new cluster information
       */
      default void addListener(Consumer<ClusterInfo> clusterInfoConsumer) {
          throw new UnsupportedOperationException();
      }
  }
  