atrusctl: update for libchrome uprev to r680000
- Use base::FileDescriptorWatcher.
- Use base::CheckedObserver.
- Use std::cref.
BUG=chromium:1054279
TEST=emerge
Change-Id: I07e8d8646d49678fe4b5d9b5220f5adbb984fd68
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/atrusctl/+/2203243
Reviewed-by: Joe Tessler <jrt@chromium.org>
Reviewed-by: Hidehiko Abe <hidehiko@chromium.org>
Commit-Queue: Qijiang Fan <fqj@google.com>
Tested-by: Qijiang Fan <fqj@google.com>
diff --git a/src/hidraw_device.cc b/src/hidraw_device.cc
index 1435ee6..57237f2 100644
--- a/src/hidraw_device.cc
+++ b/src/hidraw_device.cc
@@ -4,6 +4,7 @@
#include "hidraw_device.h"
+#include <functional>
#include <vector>
#include <inttypes.h>
@@ -48,9 +49,9 @@
HIDRawDevice::QueryResult result;
HIDMessage request(kHidReportId, command);
HIDMessage response;
- bool ret = OpenConnection(
- base::Bind(&HIDRawDevice::ExecuteQueryWrapper, base::Unretained(this),
- base::ConstRef(request), &response, &result));
+ bool ret = OpenConnection(base::Bind(&HIDRawDevice::ExecuteQueryWrapper,
+ base::Unretained(this),
+ std::cref(request), &response, &result));
if (!ret) {
result = kQueryError;
}
diff --git a/src/udev_device_manager.cc b/src/udev_device_manager.cc
index 6158bc3..69a45cf 100644
--- a/src/udev_device_manager.cc
+++ b/src/udev_device_manager.cc
@@ -7,6 +7,7 @@
#include <inttypes.h>
#include <libudev.h>
+#include <base/bind.h>
#include <base/logging.h>
#include <base/macros.h>
#include <base/strings/string_number_conversions.h>
@@ -83,8 +84,7 @@
UdevDeviceManager::UdevDeviceManager()
: udev_(udev_new()),
- monitor_(udev_monitor_new_from_netlink(udev_.get(), "udev")),
- watcher_(FROM_HERE) {
+ monitor_(udev_monitor_new_from_netlink(udev_.get(), "udev")) {
CHECK(udev_.get()) << "udev_new() returned nullptr";
CHECK(monitor_.get()) << "udev_monitor_new_from_netlink() returned nullptr";
}
@@ -103,9 +103,9 @@
}
int fd = udev_monitor_get_fd(monitor_.get());
- // TODO(fqj,g/chromeos-libchrome): replace by base::FileDescriptorWatcher.
- if (!base::MessageLoopForIO::current()->WatchFileDescriptor(
- fd, true, base::MessagePumpLibevent::WATCH_READ, &watcher_, this)) {
+ watcher_ = base::FileDescriptorWatcher::WatchReadable(
+ fd, base::Bind(&UdevDeviceManager::OnFdReadable, base::Unretained(this)));
+ if (!watcher_) {
LOG(ERROR) << "Unable to watch FD " << fd;
return false;
}
@@ -163,7 +163,7 @@
return true;
}
-void UdevDeviceManager::OnFileCanReadWithoutBlocking(int fd) {
+void UdevDeviceManager::OnFdReadable() {
ScopedUdevDevice device(udev_monitor_receive_device(monitor_.get()));
if (!device) {
LOG(WARNING) << "Ignore device event with no associated udev device.";
@@ -180,10 +180,6 @@
HandleEvent(action_str, dev_node_path);
}
-void UdevDeviceManager::OnFileCanWriteWithoutBlocking(int fd) {
- LOG(ERROR) << "Unexpected non-blocking write notification for FD " << fd;
-}
-
void UdevDeviceManager::HandleEvent(const std::string& action_str,
const std::string& device_path) {
UdevAction action = StringToAction(action_str);
diff --git a/src/udev_device_manager.h b/src/udev_device_manager.h
index e1aa9f6..a18d8b6 100644
--- a/src/udev_device_manager.h
+++ b/src/udev_device_manager.h
@@ -7,6 +7,7 @@
#include <string>
+#include <base/files/file_descriptor_watcher_posix.h>
#include <base/macros.h>
#include <base/message_loop/message_loop.h>
#include <base/observer_list.h>
@@ -16,7 +17,7 @@
namespace atrusctl {
-class UdevDeviceManager : public base::MessagePumpLibevent::FdWatcher {
+class UdevDeviceManager {
public:
UdevDeviceManager();
@@ -34,18 +35,14 @@
bool Enumerate();
private:
- // base::MessageLoopForIO::Watcher
- void OnFileCanReadWithoutBlocking(int fd) override;
-
- // base::MessageLoopForIO::Watcher
- void OnFileCanWriteWithoutBlocking(int fd) override;
+ void OnFdReadable();
void HandleEvent(const std::string& action_str,
const std::string& device_path);
ScopedUdev udev_;
ScopedUdevMonitor monitor_;
- base::MessagePumpLibevent::FdWatchController watcher_;
+ std::unique_ptr<base::FileDescriptorWatcher::Controller> watcher_;
base::ObserverList<UdevSubsystemObserver> observers_;
DISALLOW_COPY_AND_ASSIGN(UdevDeviceManager);
diff --git a/src/udev_subsystem_observer.h b/src/udev_subsystem_observer.h
index 534b5d8..ca7d80d 100644
--- a/src/udev_subsystem_observer.h
+++ b/src/udev_subsystem_observer.h
@@ -6,10 +6,11 @@
#define UDEV_SUBSYSTEM_OBSERVER_H_
#include <string>
+#include <base/observer_list_types.h>
namespace atrusctl {
-class UdevSubsystemObserver {
+class UdevSubsystemObserver : public base::CheckedObserver {
public:
virtual ~UdevSubsystemObserver() = default;