sin/include/dbus-common.h
NotAShelf 087f28d726
meta: restructure project for a modular architechture for more interfaces
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I16f88f649bddad572e0d44cee7e0edec6a6a6964
2026-04-13 13:39:49 +03:00

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