~ubuntu-branches/ubuntu/hardy/haproxy/hardy

« back to all changes in this revision

Viewing changes to include/proto/fd.h

  • Committer: Bazaar Package Importer
  • Author(s): Arnaud Cornet
  • Date: 2007-08-17 09:33:41 UTC
  • Revision ID: james.westby@ubuntu.com-20070817093341-h0t6aeeoyzo25z3r
Tags: upstream-1.3.12.dfsg
ImportĀ upstreamĀ versionĀ 1.3.12.dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
  include/proto/fd.h
 
3
  File descriptors states.
 
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_FD_H
 
23
#define _PROTO_FD_H
 
24
 
 
25
#include <stdio.h>
 
26
#include <sys/time.h>
 
27
#include <sys/types.h>
 
28
#include <unistd.h>
 
29
 
 
30
#include <common/config.h>
 
31
#include <types/fd.h>
 
32
 
 
33
/* Deletes an FD from the fdsets, and recomputes the maxfd limit.
 
34
 * The file descriptor is also closed.
 
35
 */
 
36
void fd_delete(int fd);
 
37
 
 
38
/* disable the specified poller */
 
39
void disable_poller(const char *poller_name);
 
40
 
 
41
/*
 
42
 * Initialize the pollers till the best one is found.
 
43
 * If none works, returns 0, otherwise 1.
 
44
 * The pollers register themselves just before main() is called.
 
45
 */
 
46
int init_pollers();
 
47
 
 
48
/*
 
49
 * Some pollers may lose their connection after a fork(). It may be necessary
 
50
 * to create initialize part of them again. Returns 0 in case of failure,
 
51
 * otherwise 1. The fork() function may be NULL if unused. In case of error,
 
52
 * the the current poller is destroyed and the caller is responsible for trying
 
53
 * another one by calling init_pollers() again.
 
54
 */
 
55
int fork_poller();
 
56
 
 
57
/*
 
58
 * Lists the known pollers on <out>.
 
59
 * Should be performed only before initialization.
 
60
 */
 
61
int list_pollers(FILE *out);
 
62
 
 
63
/*
 
64
 * Runs the polling loop
 
65
 */
 
66
void run_poller();
 
67
 
 
68
#define EV_FD_SET(fd, ev)    (cur_poller.set((fd), (ev)))
 
69
#define EV_FD_CLR(fd, ev)    (cur_poller.clr((fd), (ev)))
 
70
#define EV_FD_ISSET(fd, ev)  (cur_poller.is_set((fd), (ev)))
 
71
#define EV_FD_COND_S(fd, ev) (cur_poller.cond_s((fd), (ev)))
 
72
#define EV_FD_COND_C(fd, ev) (cur_poller.cond_c((fd), (ev)))
 
73
#define EV_FD_REM(fd)        (cur_poller.rem(fd))
 
74
#define EV_FD_CLO(fd)        (cur_poller.clo(fd))
 
75
 
 
76
 
 
77
/* recomputes the maxfd limit from the fd */
 
78
static inline void fd_insert(int fd)
 
79
{
 
80
        if (fd + 1 > maxfd)
 
81
                maxfd = fd + 1;
 
82
}
 
83
 
 
84
 
 
85
#endif /* _PROTO_FD_H */
 
86
 
 
87
/*
 
88
 * Local variables:
 
89
 *  c-indent-level: 8
 
90
 *  c-basic-offset: 8
 
91
 * End:
 
92
 */