blob: 7b9e1dd9a9076ef2c37a4ea3382330098a9df592 [file] [log] [blame]
Willy Tarreaudd815982007-10-16 12:25:14 +02001/*
2 include/proto/protocols.h
3 This file declares generic protocol primitives.
4
5 Copyright (C) 2000-2007 Willy Tarreau - w@1wt.eu
6
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Lesser General Public
9 License as published by the Free Software Foundation, version 2.1
10 exclusively.
11
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Lesser General Public License for more details.
16
17 You should have received a copy of the GNU Lesser General Public
18 License along with this library; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20*/
21
22#ifndef _PROTO_PROTOCOLS_H
23#define _PROTO_PROTOCOLS_H
24
25#include <types/protocols.h>
26
Willy Tarreaudabf2e22007-10-28 21:59:24 +010027/* This function adds the specified listener's file descriptor to the polling
28 * lists if it is in the LI_LISTEN state. The listener enters LI_READY or
29 * LI_FULL state depending on its number of connections.
30 */
31void enable_listener(struct listener *listener);
32
33/* This function removes the specified listener's file descriptor from the
34 * polling lists if it is in the LI_READY or in the LI_FULL state. The listener
35 * enters LI_LISTEN.
36 */
37void disable_listener(struct listener *listener);
38
39/* This function adds all of the protocol's listener's file descriptors to the
40 * polling lists when they are in the LI_LISTEN state. It is intended to be
41 * used as a protocol's generic enable_all() primitive, for use after the
42 * fork(). It puts the listeners into LI_READY or LI_FULL states depending on
43 * their number of connections. It always returns ERR_NONE.
44 */
45int enable_all_listeners(struct protocol *proto);
46
47/* This function removes all of the protocol's listener's file descriptors from
48 * the polling lists when they are in the LI_READY or LI_FULL states. It is
49 * intended to be used as a protocol's generic disable_all() primitive. It puts
50 * the listeners into LI_LISTEN, and always returns ERR_NONE.
51 */
52int disable_all_listeners(struct protocol *proto);
53
Willy Tarreaudd815982007-10-16 12:25:14 +020054/* Registers the protocol <proto> */
55void protocol_register(struct protocol *proto);
56
57/* Unregisters the protocol <proto>. Note that all listeners must have
58 * previously been unbound.
59 */
60void protocol_unregister(struct protocol *proto);
61
62/* binds all listeneres of all registered protocols. Returns a composition
63 * of ERR_NONE, ERR_RETRYABLE, ERR_FATAL.
64 */
65int protocol_bind_all(void);
66
67/* unbinds all listeners of all registered protocols. They are also closed.
68 * This must be performed before calling exit() in order to get a chance to
69 * remove file-system based sockets and pipes.
70 * Returns a composition of ERR_NONE, ERR_RETRYABLE, ERR_FATAL.
71 */
72int protocol_unbind_all(void);
73
74/* enables all listeners of all registered protocols. This is intended to be
75 * used after a fork() to enable reading on all file descriptors. Returns a
76 * composition of ERR_NONE, ERR_RETRYABLE, ERR_FATAL.
77 */
78int protocol_enable_all(void);
79
80
81#endif /* _PROTO_PROTOCOLS_H */
82
83/*
84 * Local variables:
85 * c-indent-level: 8
86 * c-basic-offset: 8
87 * End:
88 */