Files
gpu-screen-recorder-ui/include/Hotplug.hpp

33 lines
847 B
C++

#pragma once
#include <functional>
namespace gsr {
enum class HotplugAction {
ADD,
REMOVE
};
using HotplugEventCallback = std::function<void(HotplugAction hotplug_action, const char *devname)>;
class Hotplug {
public:
Hotplug() = default;
Hotplug(const Hotplug&) = delete;
Hotplug& operator=(const Hotplug&) = delete;
~Hotplug();
bool start();
int steal_fd();
void process_event_data(int fd, const HotplugEventCallback &callback);
private:
void parse_netlink_data(const char *line, const HotplugEventCallback &callback);
private:
int fd = -1;
bool started = false;
bool event_is_add = false;
bool event_is_remove = false;
bool subsystem_is_input = false;
char event_data[1024];
};
}