content: /*
   * 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.kafka.trogdor.common;
  
  import java.util.HashSet;
  import java.util.Map;
  import java.util.NavigableMap;
  import java.util.Set;
  
  /**
   * Defines a cluster topology
   */
  public interface Topology {
      class Util {
          /**
           * Get the names of agent nodes in the topology.
           */
          public static Set<String> agentNodeNames(Topology topology) {
              Set<String> set = new HashSet<>();
              for (Map.Entry<String, Node> entry : topology.nodes().entrySet()) {
                  if (entry.getValue().getConfig(Platform.Config.TROGDOR_AGENT_PORT) != null) {
                      set.add(entry.getKey());
                  }
              }
              return set;
          }
      }
  
      /**
       * Get the node with the given name.
       */
      Node node(String id);
  
      /**
       * Get a sorted map of node names to nodes.
       */
      NavigableMap<String, Node> nodes();
  }
  