#ifndef BSPWM_SUBSCRIBE_H
#define BSPWM_SUBSCRIBE_H
+#define FIFO_TEMPLATE "bspwm_fifo.XXXXXX"
+
typedef enum {
SBSC_MASK_REPORT = 1 << 0,
SBSC_MASK_MONITOR_ADD = 1 << 1,
SBSC_MASK_DESKTOP_FOCUS = 1 << 12,
SBSC_MASK_DESKTOP_ACTIVATE = 1 << 13,
SBSC_MASK_DESKTOP_LAYOUT = 1 << 14,
- SBSC_MASK_NODE_MANAGE = 1 << 15,
- SBSC_MASK_NODE_UNMANAGE = 1 << 16,
+ SBSC_MASK_NODE_ADD = 1 << 15,
+ SBSC_MASK_NODE_REMOVE = 1 << 16,
SBSC_MASK_NODE_SWAP = 1 << 17,
SBSC_MASK_NODE_TRANSFER = 1 << 18,
SBSC_MASK_NODE_FOCUS = 1 << 19,
SBSC_MASK_POINTER_ACTION = 1 << 27,
SBSC_MASK_MONITOR = (1 << 7) - (1 << 1),
SBSC_MASK_DESKTOP = (1 << 15) - (1 << 7),
- SBSC_MASK_NODE = (1 << 28) - (1 << 15),
+ SBSC_MASK_NODE = (1 << 27) - (1 << 15),
SBSC_MASK_ALL = (1 << 28) - 1
} subscriber_mask_t;
-subscriber_list_t *make_subscriber_list(FILE *stream, int field, int count);
+subscriber_list_t *make_subscriber(FILE *stream, char *fifo_path, int field, int count);
void remove_subscriber(subscriber_list_t *sb);
-void add_subscriber(FILE *stream, int field, int count);
+void add_subscriber(subscriber_list_t *sb);
int print_report(FILE *stream);
void put_status(subscriber_mask_t mask, ...);
+/* Remove any subscriber for which the stream has been closed and is no longer
+ * writable. */
+void prune_dead_subscribers(void);
+
#endif