1 /* 2 * Copyright (C) 2012-2018 Team Kodi 3 * This file is part of Kodi - https://kodi.tv 4 * 5 * SPDX-License-Identifier: GPL-2.0-or-later 6 * See LICENSES/README.md for more information. 7 */ 8 9 #pragma once 10 11 #include "storage/IStorageProvider.h" 12 13 #include <string> 14 #include <vector> 15 16 struct udev; 17 struct udev_monitor; 18 19 class CUDevProvider : public IStorageProvider 20 { 21 public: 22 CUDevProvider(); 23 ~CUDevProvider() override = default; 24 25 void Initialize() override; 26 void Stop() override; 27 28 void GetLocalDrives(VECSOURCES &localDrives) override; 29 void GetRemovableDrives(VECSOURCES &removableDrives) override; 30 31 bool Eject(const std::string& mountpath) override; 32 33 std::vector<std::string> GetDiskUsage() override; 34 35 bool PumpDriveChangeEvents(IStorageEventsCallback *callback) override; 36 37 private: 38 void GetDisks(VECSOURCES& devices, bool removable); 39 40 struct udev *m_udev; 41 struct udev_monitor *m_udevMon; 42 }; 43