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