i3
Main Page
Data Structures
Files
File List
Globals
include
ipc.h
Go to the documentation of this file.
1
/*
2
* vim:ts=4:sw=4:expandtab
3
*
4
* i3 - an improved dynamic tiling window manager
5
* © 2009-2011 Michael Stapelberg and contributors (see also: LICENSE)
6
*
7
* ipc.c: UNIX domain socket IPC (initialization, client handling, protocol).
8
*
9
*/
10
#ifndef _IPC_H
11
#define _IPC_H
12
13
#include <ev.h>
14
#include <stdbool.h>
15
#include <yajl/yajl_gen.h>
16
#include <yajl/yajl_parse.h>
17
18
#include "
data.h
"
19
#include "
tree.h
"
20
21
#include "i3/ipc.h"
22
23
extern
char
*
current_socketpath
;
24
25
typedef
struct
ipc_client
{
26
int
fd
;
27
28
/* The events which this client wants to receive */
29
int
num_events
;
30
char
**
events
;
31
32
TAILQ_ENTRY
(
ipc_client
) clients;
33
}
ipc_client
;
34
35
/*
36
* Callback type for the different message types.
37
*
38
* message is the raw packet, as received from the UNIX domain socket. size
39
* is the remaining size of bytes for this packet.
40
*
41
* message_size is the size of the message as the sender specified it.
42
* message_type is the type of the message as the sender specified it.
43
*
44
*/
45
typedef
void
(*
handler_t
)(
int
, uint8_t*,
int
, uint32_t, uint32_t);
46
47
/* Macro to declare a callback */
48
#define IPC_HANDLER(name) \
49
static void handle_ ## name (int fd, uint8_t *message, \
50
int size, uint32_t message_size, \
51
uint32_t message_type)
52
60
void
ipc_new_client
(EV_P_
struct
ev_io *w,
int
revents);
61
67
int
ipc_create_socket
(
const
char
*filename);
68
74
void
ipc_send_event
(
const
char
*event, uint32_t message_type,
const
char
*payload);
75
81
void
ipc_shutdown
(
void
);
82
83
void
dump_node
(yajl_gen gen,
Con
*con,
bool
inplace_restart);
84
85
#endif
Generated by
1.8.3.1