Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I16f88f649bddad572e0d44cee7e0edec6a6a6964
40 lines
1.1 KiB
C
40 lines
1.1 KiB
C
#ifndef DBUS_COMMON_H
|
|
#define DBUS_COMMON_H
|
|
|
|
#include "inhibit-interface.h"
|
|
#include <stdarg.h>
|
|
#include <systemd/sd-bus.h>
|
|
|
|
typedef enum {
|
|
DBUS_MODE_NONE,
|
|
DBUS_MODE_IMPLEMENT, // we own the D-Bus name
|
|
DBUS_MODE_MONITOR // we monitor via BecomeMonitor
|
|
} DBusMode;
|
|
|
|
typedef struct {
|
|
sd_bus *bus;
|
|
DBusMode mode;
|
|
char *bus_name;
|
|
char *object_path;
|
|
char *interface_name;
|
|
sd_bus_slot *slot;
|
|
InhibitInterface *parent;
|
|
} DBusService;
|
|
|
|
int dbus_service_init(DBusService *svc, const char *bus_name,
|
|
const char *object_path, const char *interface_name);
|
|
void dbus_service_cleanup(DBusService *svc);
|
|
|
|
int dbus_service_detect_mode(DBusService *svc);
|
|
int dbus_service_claim_name(DBusService *svc);
|
|
int dbus_service_become_monitor(DBusService *svc, const char **match_rules,
|
|
int num_rules);
|
|
|
|
int dbus_service_poll(DBusService *svc);
|
|
|
|
int dbus_parse_inhibit_request(sd_bus_message *m, char **app_name,
|
|
char **reason);
|
|
int dbus_send_signal(DBusService *svc, const char *signal_name,
|
|
const char *signature, ...);
|
|
|
|
#endif
|