/* * Copyright (c) 2023 Vaughn Nugent * * Library: VNLib * Package: VNLib.Data.Caching.Extensions * File: INodeDiscoveryCollection.cs * * INodeDiscoveryCollection.cs is part of VNLib.Data.Caching.Extensions which is part of the larger * VNLib collection of libraries and utilities. * * VNLib.Data.Caching.Extensions 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, either version 3 of the * License, or (at your option) any later version. * * VNLib.Data.Caching.Extensions 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 https://www.gnu.org/licenses/. */ using System.Collections.Generic; namespace VNLib.Data.Caching.Extensions.Clustering { /// /// Represents a collection of discovered nodes /// #pragma warning disable CA1711 // Identifiers should not have incorrect suffix public interface INodeDiscoveryCollection #pragma warning restore CA1711 // Identifiers should not have incorrect suffix { /// /// Begins a new discovery and gets an enumerator for the discovery process /// /// An enumerator that simplifies discovery of unique nodes INodeDiscoveryEnumerator BeginDiscovery(); /// /// Begins a new discovery and gets an enumerator for the discovery process /// /// An initial collection of peers to add to the enumeration /// An enumerator that simplifies discovery of unique nodes INodeDiscoveryEnumerator BeginDiscovery(IEnumerable initialPeers); /// /// Gets a snapshot of all discovered nodes in the current collection. /// /// The current collection of notes CacheNodeAdvertisment[] GetAllNodes(); /// /// Completes a discovery process and updates the collection with the results /// /// The enumerator used to collect discovered nodes void CompleteDiscovery(INodeDiscoveryEnumerator enumerator); } }