]> git.ipfire.org Git - thirdparty/squid.git/blob - src/fde.h
Author: wessels & Christos Tsantilas
[thirdparty/squid.git] / src / fde.h
1
2 /*
3 * $Id: fde.h,v 1.13 2007/08/13 17:20:51 hno Exp $
4 *
5 *
6 * SQUID Web Proxy Cache http://www.squid-cache.org/
7 * ----------------------------------------------------------
8 *
9 * Squid is the result of efforts by numerous individuals from
10 * the Internet community; see the CONTRIBUTORS file for full
11 * details. Many organizations have provided support for Squid's
12 * development; see the SPONSORS file for full details. Squid is
13 * Copyrighted (C) 2001 by the Regents of the University of
14 * California; see the COPYRIGHT file for full details. Squid
15 * incorporates software developed and/or copyrighted by other
16 * sources; see the CREDITS file for full details.
17 *
18 * This program is free software; you can redistribute it and/or modify
19 * it under the terms of the GNU General Public License as published by
20 * the Free Software Foundation; either version 2 of the License, or
21 * (at your option) any later version.
22 *
23 * This program is distributed in the hope that it will be useful,
24 * but WITHOUT ANY WARRANTY; without even the implied warranty of
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26 * GNU General Public License for more details.
27 *
28 * You should have received a copy of the GNU General Public License
29 * along with this program; if not, write to the Free Software
30 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
31 *
32 */
33
34 #ifndef SQUID_FDE_H
35 #define SQUID_FDE_H
36 #include "comm.h"
37
38 class PconnPool;
39
40 class fde
41 {
42
43 public:
44 /* NOTE: memset is used on fdes today. 20030715 RBC */
45 static void DumpStats (StoreEntry *);
46
47 char const *remoteAddr() const;
48 void dumpStats (StoreEntry &, int);
49 bool readPending(int);
50 void noteUse(PconnPool *);
51
52 unsigned int type;
53 u_short local_port;
54 u_short remote_port;
55
56 struct IN_ADDR local_addr;
57 unsigned char tos;
58 char ipaddr[16]; /* dotted decimal address of peer */
59 char desc[FD_DESC_SZ];
60
61 struct
62 {
63 unsigned int open:1;
64 unsigned int close_request:1;
65 unsigned int write_daemon:1;
66 unsigned int closing:1;
67 unsigned int socket_eof:1;
68 unsigned int nolinger:1;
69 unsigned int nonblocking:1;
70 unsigned int ipc:1;
71 unsigned int called_connect:1;
72 unsigned int nodelay:1;
73 unsigned int close_on_exec:1;
74 unsigned int read_pending:1;
75 unsigned int write_pending:1;
76 } flags;
77
78 int64_t bytes_read;
79 int64_t bytes_written;
80
81 struct {
82 int uses; /* ie # req's over persistent conn */
83 PconnPool *pool;
84 } pconn;
85
86 unsigned epoll_state;
87
88 struct _fde_disk disk;
89 PF *read_handler;
90 void *read_data;
91 PF *write_handler;
92 void *write_data;
93 PF *timeout_handler;
94 time_t timeout;
95 void *timeout_data;
96 void *lifetime_data;
97 close_handler *closeHandler; /* linked list */
98 CommWriteStateData *wstate; /* State data for comm_write */
99 READ_HANDLER *read_method;
100 WRITE_HANDLER *write_method;
101 #if USE_SSL
102 SSL *ssl;
103 #endif
104 #ifdef _SQUID_MSWIN_
105 struct {
106 long handle;
107 } win32;
108 #endif
109
110 };
111
112 #endif /* SQUID_FDE_H */