using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace Rssdp
{
	/// 
	/// Event arguments for the  event.
	/// 
	public sealed class DeviceUnavailableEventArgs : EventArgs
	{
		#region Fields
		private readonly DiscoveredSsdpDevice _DiscoveredDevice;
		private readonly bool _Expired;
		#endregion
		#region Constructors
		/// 
		/// Full constructor.
		/// 
		/// A  instance representing the device that has become unavailable.
		/// A boolean value indicating whether this device is unavailable because it expired, or because it explicitly sent a byebye notification.. See  for more detail.
		/// Thrown if the  parameter is null.
		public DeviceUnavailableEventArgs(DiscoveredSsdpDevice discoveredDevice, bool expired) 
		{
			if (discoveredDevice == null) throw new ArgumentNullException("discoveredDevice");
			_DiscoveredDevice = discoveredDevice;
			_Expired = expired;
		}
		#endregion
		#region Public Properties
		/// 
		/// Returns true if the device is considered unavailable because it's cached information expired before a new alive notification or search result was received. Returns false if the device is unavailable because it sent an explicit notification of it's unavailability.
		/// 
		public bool Expired
		{
			get { return _Expired; }
		}
		/// 
		/// A reference to a  instance containing the discovery details of the removed device.
		/// 
		public DiscoveredSsdpDevice DiscoveredDevice
		{
			get { return _DiscoveredDevice; }
		} 
		#endregion
	}
}