diff options
Diffstat (limited to 'RSSDP/ISsdpCommunicationsServer.cs')
| -rw-r--r-- | RSSDP/ISsdpCommunicationsServer.cs | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/RSSDP/ISsdpCommunicationsServer.cs b/RSSDP/ISsdpCommunicationsServer.cs new file mode 100644 index 000000000..990b21d05 --- /dev/null +++ b/RSSDP/ISsdpCommunicationsServer.cs @@ -0,0 +1,71 @@ +using System; +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> + /// Stops listening for search responses on the local, unicast socket. + /// </summary> + void StopListeningForResponses(); + + /// <summary> + /// Sends a message to a particular address (uni or multicast) and port. + /// </summary> + /// <param name="messageData">A byte array containing the data to send.</param> + /// <param name="destination">A <see cref="UdpEndPoint"/> representing the destination address for the data. Can be either a multicast or unicast destination.</param> + Task SendMessage(byte[] messageData, UdpEndPoint destination); + + /// <summary> + /// Sends a message to the SSDP multicast address and port. + /// </summary> + /// <param name="messageData">A byte array containing the data to send.</param> + Task SendMulticastMessage(byte[] messageData); + + #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 + + } +}
\ No newline at end of file |
