| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | using System;using System.Net;using System.Threading;using System.Threading.Tasks;namespace Rssdp.Infrastructure{    /// <summary>    /// Interface for a component that manages network communication (sending and receiving HTTPU messages) for the SSDP protocol.    /// </summary>    public interface ISsdpCommunicationsServer : IDisposable    {        #region Events        /// <summary>        /// Raised when a HTTPU request message is received by a socket (unicast or multicast).        /// </summary>        event EventHandler<RequestReceivedEventArgs> RequestReceived;        /// <summary>        /// Raised when an HTTPU response message is received by a socket (unicast or multicast).        /// </summary>        event EventHandler<ResponseReceivedEventArgs> ResponseReceived;        #endregion        #region Methods        /// <summary>        /// Causes the server to begin listening for multicast messages, being SSDP search requests and notifications.        /// </summary>        void BeginListeningForBroadcasts();        /// <summary>        /// Causes the server to stop listening for multicast messages, being SSDP search requests and notifications.        /// </summary>        void StopListeningForBroadcasts();        /// <summary>        /// Sends a message to a particular address (uni or multicast) and port.        /// </summary>        Task SendMessage(byte[] messageData, IPEndPoint destination, IPAddress fromLocalIpAddress, CancellationToken cancellationToken);        /// <summary>        /// Sends a message to the SSDP multicast address and port.        /// </summary>        Task SendMulticastMessage(string message, IPAddress fromLocalIpAddress, CancellationToken cancellationToken);        Task SendMulticastMessage(string message, int sendCount, IPAddress fromLocalIpAddress, CancellationToken cancellationToken);        #endregion        #region Properties        /// <summary>        /// Gets or sets a boolean value indicating whether or not this instance is shared amongst multiple <see cref="SsdpDeviceLocatorBase"/> and/or <see cref="ISsdpDevicePublisher"/> instances.        /// </summary>        /// <remarks>        /// <para>If true, disposing an instance of a <see cref="SsdpDeviceLocatorBase"/>or a <see cref="ISsdpDevicePublisher"/> will not dispose this comms server instance. The calling code is responsible for managing the lifetime of the server.</para>        /// </remarks>        bool IsShared { get; set; }        #endregion    }}
 |