File indexing completed on 2024-05-12 05:38:44
0001 /* 0002 SPDX-FileCopyrightText: 2009 Benjamin K. Stuhl <bks24@cornell.edu> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #pragma once 0008 0009 extern "C" { 0010 #define LIBUDEV_I_KNOW_THE_API_IS_SUBJECT_TO_CHANGE 0011 #include <libudev.h> 0012 } 0013 0014 class QByteArray; 0015 class QSocketNotifier; 0016 0017 namespace UdevQt 0018 { 0019 class DevicePrivate 0020 { 0021 public: 0022 explicit DevicePrivate(struct udev_device *udev_, bool ref = true); 0023 ~DevicePrivate(); 0024 DevicePrivate &operator=(const DevicePrivate &other); 0025 0026 QString decodePropertyValue(const QByteArray &encoded) const; 0027 0028 struct udev_device *udev; 0029 }; 0030 0031 class Client; 0032 class ClientPrivate 0033 { 0034 public: 0035 enum ListenToWhat { 0036 ListenToList, 0037 ListenToNone, 0038 }; 0039 0040 explicit ClientPrivate(Client *q_); 0041 ~ClientPrivate(); 0042 0043 void init(const QStringList &subsystemList, ListenToWhat what); 0044 void setWatchedSubsystems(const QStringList &subsystemList); 0045 void _uq_monitorReadyRead(int fd); 0046 DeviceList deviceListFromEnumerate(struct udev_enumerate *en); 0047 0048 struct udev *udev; 0049 struct udev_monitor *monitor; 0050 Client *q; 0051 QSocketNotifier *monitorNotifier; 0052 QStringList watchedSubsystems; 0053 }; 0054 0055 inline QStringList listFromListEntry(struct udev_list_entry *list) 0056 { 0057 QStringList ret; 0058 struct udev_list_entry *entry; 0059 0060 udev_list_entry_foreach(entry, list) 0061 { 0062 ret << QString::fromLatin1(udev_list_entry_get_name(entry)); 0063 } 0064 return ret; 0065 } 0066 0067 }