using System;
using System.Threading.Tasks;
namespace Rssdp.Infrastructure
{
///
/// Interface for components that publish the existence of SSDP devices.
///
///
/// Publishing a device includes sending notifications (alive and byebye) as well as responding to search requests when appropriate.
///
///
///
public interface ISsdpDevicePublisher
{
///
/// Adds a device (and it's children) to the list of devices being published by this server, making them discoverable to SSDP clients.
///
/// The instance to add.
/// An awaitable .
void AddDevice(SsdpRootDevice device);
///
/// Removes a device (and it's children) from the list of devices being published by this server, making them undiscoverable.
///
/// The instance to add.
/// An awaitable .
Task RemoveDevice(SsdpRootDevice device);
///
/// Returns a read only list of devices being published by this instance.
///
///
System.Collections.Generic.IEnumerable Devices { get; }
}
}