aboutsummaryrefslogtreecommitdiff
path: root/RSSDP/ISsdpCommunicationsServer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'RSSDP/ISsdpCommunicationsServer.cs')
-rw-r--r--RSSDP/ISsdpCommunicationsServer.cs71
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