netatalk
4.5.1
Free and Open Source Apple Filing Protocol (AFP) Server
Toggle main menu visibility
Loading...
Searching...
No Matches
server_ipc.h
Go to the documentation of this file.
1
#ifndef ATALK_SERVER_IPC_H
2
#define ATALK_SERVER_IPC_H
3
4
#include <stdint.h>
5
6
#include <
atalk/cnid.h
>
7
#include <
atalk/globals.h
>
8
#include <
atalk/server_child.h
>
9
10
/* IPC wire format constants — moved from server_ipc.c so receivers (Eg dircache.c)
11
* can parse the wire format. 14-byte header: cmd(2) + pid(4) + uid(4) + len(4) */
12
#define IPC_HEADERLEN 14
13
#define IPC_MAXMSGSIZE 90
14
15
/* Remember to add IPC commands to server_ipc.c:ipc_cmd_str[] */
16
#define IPC_DISCOLDSESSION 0
17
#define IPC_GETSESSION 1
18
#define IPC_STATE 2
19
#define IPC_VOLUMES 3
20
#define IPC_LOGINDONE 4
21
#define IPC_CACHE_HINT 5
22
#define IPC_SESSIONTOKEN 6
23
24
/* Cache hint types — carried in struct ipc_cache_hint_payload.event */
25
#define CACHE_HINT_REFRESH 0
26
#define CACHE_HINT_DELETE 1
27
#define CACHE_HINT_DELETE_CHILDREN 2
28
29
/* Hint payload — sent inside standard IPC wire header framing.
30
* Packed to guarantee sizeof == 8. vid and cnid in network byte order. */
31
struct
__attribute__((packed))
ipc_cache_hint_payload
{
32
uint8_t
event
;
/* Hint type: CACHE_HINT_REFRESH/DELETE/DELETE_CHILDREN */
33
uint8_t
reserved
;
/* Alignment padding (could be version field in future) */
34
uint16_t
vid
;
/* Volume ID — network byte order (matches vol->v_vid) */
35
cnid_t
cnid
;
/* CNID of affected file/dir — network byte order */
36
};
37
38
_Static_assert
(
sizeof
(
struct
ipc_cache_hint_payload
) == 8,
39
"Hint payload must be exactly 8 bytes"
);
40
41
/* Hint buffer capacity — main.c checks this to trigger immediate flush
42
* when buffer is full after fd event processing. */
43
#define HINT_BUF_SIZE 128
44
45
/* Flush interval for poll timeout — main.c uses this to set poll timeout
46
* when hints are buffered. 50ms balances latency vs syscall overhead. */
47
#define HINT_FLUSH_INTERVAL_MS 50
48
49
extern
int
ipc_server_read
(
server_child_t
*children,
int
fd);
50
extern
int
ipc_child_write
(
AFPObj
*obj, uint16_t command,
size_t
len,
51
void
*token);
52
extern
int
ipc_child_state
(
AFPObj
*obj, uint16_t state);
53
54
extern
int
ipc_send_cache_hint
(
const
AFPObj
*obj, uint16_t
vid
,
cnid_t
cnid
,
55
uint8_t
event
);
56
extern
unsigned
long
long
ipc_get_hints_sent
(
void
);
57
extern
unsigned
long
long
ipc_get_hints_dropped
(
void
);
58
59
/* Poll-driven hint flush API (parent-side only, single-threaded) */
60
extern
void
hint_flush_pending
(
server_child_t
*children);
61
extern
int
hint_buf_count
(
void
);
62
63
#endif
/* ATALK_SERVER_IPC_H */
cnid_t
uint32_t cnid_t
Definition
adouble.h:156
cnid.h
globals.h
server_child.h
data structures and utility functions for child processes
ipc_server_read
int ipc_server_read(server_child_t *children, int fd)
Read a IPC message from a child.
Definition
server_ipc.c:363
ipc_send_cache_hint
int ipc_send_cache_hint(const AFPObj *obj, uint16_t vid, cnid_t cnid, uint8_t event)
Send a dircache invalidation hint from child to parent.
Definition
server_ipc.c:718
ipc_child_state
int ipc_child_state(AFPObj *obj, uint16_t state)
Definition
server_ipc.c:541
hint_buf_count
int hint_buf_count(void)
Return current number of buffered hints.
Definition
server_ipc.c:557
hint_flush_pending
void hint_flush_pending(server_child_t *children)
Flush all buffered hints to sibling children.
Definition
server_ipc.c:580
ipc_get_hints_dropped
unsigned long long ipc_get_hints_dropped(void)
Definition
server_ipc.c:689
ipc_child_write
int ipc_child_write(AFPObj *obj, uint16_t command, size_t len, void *token)
Definition
server_ipc.c:499
ipc_get_hints_sent
unsigned long long ipc_get_hints_sent(void)
Definition
server_ipc.c:684
AFPObj
Definition
globals.h:166
ipc_cache_hint_payload
Definition
server_ipc.h:31
ipc_cache_hint_payload::reserved
uint8_t reserved
Definition
server_ipc.h:33
ipc_cache_hint_payload::event
uint8_t event
Definition
server_ipc.h:32
ipc_cache_hint_payload::cnid
cnid_t cnid
Definition
server_ipc.h:35
ipc_cache_hint_payload::vid
uint16_t vid
Definition
server_ipc.h:34
server_child_t
Definition
server_child.h:47
include
atalk
server_ipc.h
Generated by
1.18.0