using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Rssdp
{
	/// 
	/// Extensions for  and derived types.
	/// 
	public static class SsdpDeviceExtensions
	{
		/// 
		/// Returns the root device associated with a device instance derived from .
		/// 
		/// The device instance to find the  for.
		/// 
		/// The  must be or inherit from  or , otherwise an  will occur.
		/// May return null if the  instance is an embedded device not yet associated with a  instance yet.
		/// If  is an instance of  (or derives from it), returns the same instance cast to .
		/// 
		/// The  instance associated with the device instance specified, or null otherwise.
		/// Thrown if  is null.
		/// Thrown if  is not an instance of or dervied from either  or .
		public static SsdpRootDevice ToRootDevice(this SsdpDevice device)
		{
			if (device == null) throw new System.ArgumentNullException("device");
			var rootDevice = device as SsdpRootDevice;
			if (rootDevice == null)
				rootDevice = ((SsdpEmbeddedDevice)device).RootDevice;
			return rootDevice;
		}
	}
}