34 #ifndef OTBR_DBUS_AGENT_HPP_
35 #define OTBR_DBUS_AGENT_HPP_
40 #include <sys/select.h>
54 class DBusAgent :
public MainloopProcessor,
private NonCopyable
71 void Update(MainloopContext &aMainloop)
override;
72 void Process(
const MainloopContext &aMainloop)
override;
75 using Clock = std::chrono::steady_clock;
76 constexpr
static std::chrono::seconds kDBusWaitAllowance = std::chrono::seconds(30);
78 using UniqueDBusConnection = std::unique_ptr<DBusConnection, std::function<void(DBusConnection *)>>;
80 static dbus_bool_t AddDBusWatch(
struct DBusWatch *aWatch,
void *aContext);
81 static void RemoveDBusWatch(
struct DBusWatch *aWatch,
void *aContext);
82 UniqueDBusConnection PrepareDBusConnection(
void);
84 static const struct timeval kPollTimeout;
86 std::string mInterfaceName;
87 std::unique_ptr<DBusThreadObject> mThreadObject;
88 UniqueDBusConnection mConnection;
90 Mdns::Publisher & mPublisher;
96 std::set<DBusWatch *> mWatches;
102 #endif // OTBR_DBUS_AGENT_HPP_