diff options
author | ygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-10 15:11:14 +0000 |
---|---|---|
committer | ygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-10 15:11:14 +0000 |
commit | bca53b0d57b74ad40aca5b37f0223e7dcf3bc8f7 (patch) | |
tree | a183ab639b5ec545d77aef013a3f74f5e0414b48 /device/hid/hid_service_linux.h | |
parent | f84863d54810e5d4aaee26c4d9a2b57fadcb79a1 (diff) | |
download | chromium_src-bca53b0d57b74ad40aca5b37f0223e7dcf3bc8f7.zip chromium_src-bca53b0d57b74ad40aca5b37f0223e7dcf3bc8f7.tar.gz chromium_src-bca53b0d57b74ad40aca5b37f0223e7dcf3bc8f7.tar.bz2 |
Udev-related methods are extracted from HidServiceLinux into an individual service.
BUG=357050
TEST=none
Review URL: https://codereview.chromium.org/230503003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@262993 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'device/hid/hid_service_linux.h')
-rw-r--r-- | device/hid/hid_service_linux.h | 56 |
1 files changed, 8 insertions, 48 deletions
diff --git a/device/hid/hid_service_linux.h b/device/hid/hid_service_linux.h index ae730ce..7bffd09 100644 --- a/device/hid/hid_service_linux.h +++ b/device/hid/hid_service_linux.h @@ -5,73 +5,33 @@ #ifndef DEVICE_HID_HID_SERVICE_LINUX_H_ #define DEVICE_HID_HID_SERVICE_LINUX_H_ -#include <libudev.h> - -#include <map> -#include <string> - +#include "base/compiler_specific.h" #include "base/macros.h" -#include "base/memory/scoped_ptr.h" -#include "base/message_loop/message_pump_libevent.h" +#include "device/hid/device_monitor_linux.h" #include "device/hid/hid_device_info.h" #include "device/hid/hid_service.h" +struct udev_device; + namespace device { class HidConnection; -template<typename T, void func(T*)> -void DiscardReturnType(T* arg) { func(arg); } -template<typename T, T* func(T*)> -void DiscardReturnType(T* arg) { func(arg); } - -template<typename T, void func(T*)> -struct Deleter { - void operator()(T* enumerate) const { - if (enumerate != NULL) - func(enumerate); - } -}; - -typedef Deleter< - udev_enumerate, - DiscardReturnType<udev_enumerate, udev_enumerate_unref> > - UdevEnumerateDeleter; -typedef Deleter< - udev_device, - DiscardReturnType<udev_device, udev_device_unref> > UdevDeviceDeleter; -typedef Deleter<udev, DiscardReturnType<udev, udev_unref> > UdevDeleter; -typedef Deleter< - udev_monitor, - DiscardReturnType<udev_monitor, udev_monitor_unref> > UdevMonitorDeleter; - -typedef scoped_ptr<udev_device, UdevDeviceDeleter> ScopedUdevDevicePtr; -typedef scoped_ptr<udev_enumerate, UdevEnumerateDeleter> ScopedUdevEnumeratePtr; - class HidServiceLinux : public HidService, - public base::MessagePumpLibevent::Watcher { + public DeviceMonitorLinux::Observer { public: HidServiceLinux(); virtual scoped_refptr<HidConnection> Connect(const HidDeviceId& device_id) OVERRIDE; - // Implements base::MessagePumpLibevent::Watcher - virtual void OnFileCanReadWithoutBlocking(int fd) OVERRIDE; - virtual void OnFileCanWriteWithoutBlocking(int fd) OVERRIDE; + // Implements base::DeviceMonitorLinux::Observer: + virtual void OnDeviceAdded(udev_device* device) OVERRIDE; + virtual void OnDeviceRemoved(udev_device* device) OVERRIDE; private: virtual ~HidServiceLinux(); - void Enumerate(); - void PlatformAddDevice(udev_device* device); - void PlatformRemoveDevice(udev_device* raw_dev); - - scoped_ptr<udev, UdevDeleter> udev_; - scoped_ptr<udev_monitor, UdevMonitorDeleter> monitor_; - int monitor_fd_; - base::MessagePumpLibevent::FileDescriptorWatcher monitor_watcher_; - DISALLOW_COPY_AND_ASSIGN(HidServiceLinux); }; |