X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Fipc.h;h=a1caea827fb7a549cbcde1a3c5c973e14e1ab987;hb=37d0105c8328f718740c2ae9bae0dff87287a467;hp=e1c18816715e1fccddc199a19f736ed184e1b6e2;hpb=884214f14fdbd0a4a368d2a36d5e50324fa1d52a;p=i3%2Fi3 diff --git a/include/ipc.h b/include/ipc.h index e1c18816..a1caea82 100644 --- a/include/ipc.h +++ b/include/ipc.h @@ -9,6 +9,8 @@ */ #pragma once +#include + #include #include #include @@ -16,7 +18,7 @@ #include "data.h" #include "tree.h" -#include "config.h" +#include "configuration.h" #include "i3/ipc.h" @@ -29,7 +31,17 @@ typedef struct ipc_client { int num_events; char **events; - TAILQ_ENTRY(ipc_client) clients; + /* For clients which subscribe to the tick event: whether the first tick + * event has been sent by i3. */ + bool first_tick_sent; + + struct ev_io *callback; + struct ev_timer *timeout; + uint8_t *buffer; + size_t buffer_size; + + TAILQ_ENTRY(ipc_client) + clients; } ipc_client; /* @@ -74,11 +86,18 @@ int ipc_create_socket(const char *filename); void ipc_send_event(const char *event, uint32_t message_type, const char *payload); /** - * Calls shutdown() on each socket and closes it. This function to be called - * when exiting or restarting only! + * Calls to ipc_shutdown() should provide a reason for the shutdown. + */ +typedef enum { + SHUTDOWN_REASON_RESTART, + SHUTDOWN_REASON_EXIT +} shutdown_reason_t; + +/** + * Calls shutdown() on each socket and closes it. * */ -void ipc_shutdown(void); +void ipc_shutdown(shutdown_reason_t reason); void dump_node(yajl_gen gen, Con *con, bool inplace_restart); @@ -110,3 +129,9 @@ void ipc_send_barconfig_update_event(Barconfig *barconfig); * For the binding events, we send the serialized binding struct. */ void ipc_send_binding_event(const char *event_type, Binding *bind); + +/** + * Set the maximum duration that we allow for a connection with an unwriteable + * socket. + */ +void ipc_set_kill_timeout(ev_tstamp new);