i3
Data Structures | Macros | Typedefs | Functions | Variables
ipc.h File Reference
#include <ev.h>
#include <stdbool.h>
#include <yajl/yajl_gen.h>
#include <yajl/yajl_parse.h>
#include "data.h"
#include "tree.h"
#include "i3/ipc.h"
Include dependency graph for ipc.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ipc_client
 

Macros

#define IPC_HANDLER(name)
 

Typedefs

typedef struct ipc_client ipc_client
 
typedef void(* handler_t )(int, uint8_t *, int, uint32_t, uint32_t)
 

Functions

void ipc_new_client (EV_P_ struct ev_io *w, int revents)
 Handler for activity on the listening socket, meaning that a new client has just connected and we should accept() him. More...
 
int ipc_create_socket (const char *filename)
 Creates the UNIX domain socket at the given path, sets it to non-blocking mode, bind()s and listen()s on it. More...
 
void ipc_send_event (const char *event, uint32_t message_type, const char *payload)
 Sends the specified event to all IPC clients which are currently connected and subscribed to this kind of event. More...
 
void ipc_shutdown (void)
 Calls shutdown() on each socket and closes it. More...
 
void dump_node (yajl_gen gen, Con *con, bool inplace_restart)
 
void ipc_send_workspace_focus_event (Con *current, Con *old)
 For the workspace "focus" event we send, along the usual "change" field, also the current and previous workspace, in "current" and "old" respectively. More...
 

Variables

char * current_socketpath
 

Macro Definition Documentation

#define IPC_HANDLER (   name)
Value:
static void handle_ ## name (int fd, uint8_t *message, \
int size, uint32_t message_size, \
uint32_t message_type)

Definition at line 48 of file ipc.h.

Typedef Documentation

typedef void(* handler_t)(int, uint8_t *, int, uint32_t, uint32_t)

Definition at line 45 of file ipc.h.

typedef struct ipc_client ipc_client

Function Documentation

void dump_node ( yajl_gen  gen,
Con con,
bool  inplace_restart 
)
int ipc_create_socket ( const char *  filename)

Creates the UNIX domain socket at the given path, sets it to non-blocking mode, bind()s and listen()s on it.

Definition at line 919 of file ipc.c.

References current_socketpath, DLOG, FREE, mkdirp(), path_exists(), resolve_tilde(), and sstrdup().

Referenced by main().

Here is the call graph for this function:

void ipc_new_client ( EV_P_ struct ev_io *  w,
int  revents 
)

Handler for activity on the listening socket, meaning that a new client has just connected and we should accept() him.

Sets up the event handler for activity on the new connection and inserts the file descriptor into the list of clients.

Definition at line 886 of file ipc.c.

References DLOG, ipc_receive_message(), scalloc(), and TAILQ_INSERT_TAIL.

Referenced by main().

Here is the call graph for this function:

void ipc_send_event ( const char *  event,
uint32_t  message_type,
const char *  payload 
)

Sends the specified event to all IPC clients which are currently connected and subscribed to this kind of event.

Definition at line 75 of file ipc.c.

References ipc_client::events, ipc_client::fd, ipc_send_message(), ipc_client::num_events, and TAILQ_FOREACH.

Referenced by _workspace_show(), cmd_move_workspace_to_output(), cmd_reload(), cmd_rename_workspace(), con_on_remove_child(), handle_screen_change(), ipc_send_window_new_event(), ipc_send_workspace_focus_event(), switch_mode(), update_barconfig(), workspace_get(), and workspace_update_urgent_flag().

Here is the call graph for this function:

void ipc_send_workspace_focus_event ( Con current,
Con old 
)

For the workspace "focus" event we send, along the usual "change" field, also the current and previous workspace, in "current" and "old" respectively.

Definition at line 970 of file ipc.c.

References dump_node(), ipc_send_event(), y, ygenalloc, and ystr.

Referenced by _workspace_show(), and move_to_output_directed().

Here is the call graph for this function:

void ipc_shutdown ( void  )

Calls shutdown() on each socket and closes it.

This function to be called when exiting or restarting only!

Definition at line 98 of file ipc.c.

References ipc_client::fd, TAILQ_EMPTY, TAILQ_FIRST, and TAILQ_REMOVE.

Referenced by i3_restart().

Variable Documentation

char* current_socketpath

Definition at line 23 of file ipc.c.

Referenced by ipc_create_socket(), and x_set_i3_atoms().