Esempio n. 1
0
        private IDevice Resolve(Hal.Device hal_device)
        {
            if (!hal_device.QueryCapability("block") && !hal_device.QueryCapability("portable_audio_player"))
            {
                return(null);
            }

            IDevice device = BlockDevice.Resolve <IBlockDevice> (manager, hal_device);

            if (device == null)
            {
                device = Volume.Resolve(null, manager, hal_device);
                if (device == null)
                {
                    device = new Device(manager, hal_device);
                }
            }

            return(device);
        }
Esempio n. 2
0
        public static BlockDevice Resolve <T> (Hal.Manager manager, Hal.Device device) where T : IBlockDevice
        {
            if (device.QueryCapability("block") && device.PropertyExists("block.device"))
            {
                if (typeof(T) == typeof(ICdromDevice))
                {
                    return(CdromDevice.Resolve(manager, device));
                }
                else if (typeof(T) == typeof(IDiskDevice))
                {
                    return(DiskDevice.Resolve(manager, device));
                }

                return((BlockDevice)CdromDevice.Resolve(manager, device)
                       ?? (BlockDevice)DiskDevice.Resolve(manager, device));
            }

            return(null);
        }
Esempio n. 3
0
        public static Volume Resolve(BlockDevice parent, Hal.Manager manager, Hal.Device device)
        {
            if (!device.IsVolume)
            {
                return(null);
            }

            try {
                Volume volume = (parent is ICdromDevice || (parent == null && device.QueryCapability("volume.disc")))
                    ? DiscVolume.Resolve(parent, manager, device)
                    : new Volume(parent, manager, device);

                return(CheckVolumeMounted(volume) ? volume : null);
            } catch (Exception e) {
                Hyena.Log.Exception(e);
            }

            return(null);
        }
Esempio n. 4
0
 public new static DiscVolume Resolve(BlockDevice parent, Hal.Manager manager, Hal.Device device)
 {
     return(device.QueryCapability("volume.disc") ? new DiscVolume(parent, manager, device) : null);
 }