]> arthur.barton.de Git - netatalk.git/blob - etc/afpd/fce_api_internal.h
fb5e58e38971602b6de5317e41922e3db7d10461
[netatalk.git] / etc / afpd / fce_api_internal.h
1 /* 
2  * File:   fce_api_internal.h
3  * Author: mw
4  *
5  * Created on 1. Oktober 2010, 23:48
6  */
7
8 #ifndef _FCE_API_INTERNAL_H
9 #define _FCE_API_INTERNAL_H
10
11 #include <stdbool.h>
12
13 #include <atalk/fce_api.h>
14
15 #define FCE_MAX_UDP_SOCKS 5     /* Allow a maximum of udp listeners for file change events */
16 #define FCE_SOCKET_RETRY_DELAY_S 600 /* Pause this time in s after socket was broken */
17 #define FCE_PACKET_VERSION  1
18 #define FCE_HISTORY_LEN 10  /* This is used to coalesce events */
19 #define MAX_COALESCE_TIME_MS 1000  /* Events oldeer than this are not coalesced */
20
21 #define FCE_COALESCE_CREATE (1 << 0)
22 #define FCE_COALESCE_DELETE (1 << 1)
23 #define FCE_COALESCE_ALL    (FCE_COALESCE_CREATE | FCE_COALESCE_DELETE)
24
25 struct udp_entry {
26     int sock;
27     char *addr;
28     char *port;
29     struct addrinfo addrinfo;
30     struct sockaddr_storage sockaddr;
31     time_t next_try_on_error;      /* In case of error set next timestamp to retry */
32 };
33
34 struct fce_history {
35     fce_ev_t       fce_h_event;
36         fce_obj_t      fce_h_type;
37         char           fce_h_path[MAXPATHLEN + 1];
38         struct timeval fce_h_tv;
39 };
40
41 struct fce_close_event {
42     time_t time;
43         char path[MAXPATHLEN + 1];
44 };
45
46 #define PACKET_HDR_LEN (sizeof(struct fce_packet) - FCE_MAX_PATH_LEN)
47
48 bool fce_handle_coalescation(int event, const char *path, fce_obj_t type);
49 void fce_initialize_history();
50
51
52 #endif  /* _FCE_API_INTERNAL_H */
53