]> git.ipfire.org Git - thirdparty/squid.git/blob - src/CommCalls.cc
Renamed squid.h to squid-old.h and config.h to squid.h
[thirdparty/squid.git] / src / CommCalls.cc
1 #include "squid-old.h"
2 #include "fde.h"
3 #include "comm/Connection.h"
4 #include "CommCalls.h"
5
6 /* CommCommonCbParams */
7
8 CommCommonCbParams::CommCommonCbParams(void *aData):
9 data(cbdataReference(aData)), conn(), flag(COMM_OK), xerrno(0), fd(-1)
10 {
11 }
12
13 CommCommonCbParams::CommCommonCbParams(const CommCommonCbParams &p):
14 data(cbdataReference(p.data)), conn(p.conn), flag(p.flag), xerrno(p.xerrno), fd(p.fd)
15 {
16 }
17
18 CommCommonCbParams::~CommCommonCbParams()
19 {
20 cbdataReferenceDone(data);
21 }
22
23 void
24 CommCommonCbParams::print(std::ostream &os) const
25 {
26 if (conn != NULL)
27 os << conn;
28 else
29 os << "FD " << fd;
30
31 if (xerrno)
32 os << ", errno=" << xerrno;
33 if (flag != COMM_OK)
34 os << ", flag=" << flag;
35 if (data)
36 os << ", data=" << data;
37 }
38
39
40 /* CommAcceptCbParams */
41
42 CommAcceptCbParams::CommAcceptCbParams(void *aData):
43 CommCommonCbParams(aData)
44 {
45 }
46
47 /* CommConnectCbParams */
48
49 CommConnectCbParams::CommConnectCbParams(void *aData):
50 CommCommonCbParams(aData)
51 {
52 }
53
54 bool
55 CommConnectCbParams::syncWithComm()
56 {
57 // drop the call if the call was scheduled before comm_close but
58 // is being fired after comm_close
59 if (fd >= 0 && fd_table[fd].closing()) {
60 debugs(5, 3, HERE << "dropping late connect call: FD " << fd);
61 return false;
62 }
63 return true; // now we are in sync and can handle the call
64 }
65
66 /* CommIoCbParams */
67
68 CommIoCbParams::CommIoCbParams(void *aData): CommCommonCbParams(aData),
69 buf(NULL), size(0)
70 {
71 }
72
73 bool
74 CommIoCbParams::syncWithComm()
75 {
76 // change parameters if the call was scheduled before comm_close but
77 // is being fired after comm_close
78 if ((conn->fd < 0 || fd_table[conn->fd].closing()) && flag != COMM_ERR_CLOSING) {
79 debugs(5, 3, HERE << "converting late call to COMM_ERR_CLOSING: " << conn);
80 flag = COMM_ERR_CLOSING;
81 }
82 return true; // now we are in sync and can handle the call
83 }
84
85
86 void
87 CommIoCbParams::print(std::ostream &os) const
88 {
89 CommCommonCbParams::print(os);
90 if (buf) {
91 os << ", size=" << size;
92 os << ", buf=" << (void*)buf;
93 }
94 }
95
96
97 /* CommCloseCbParams */
98
99 CommCloseCbParams::CommCloseCbParams(void *aData):
100 CommCommonCbParams(aData)
101 {
102 }
103
104 /* CommTimeoutCbParams */
105
106 CommTimeoutCbParams::CommTimeoutCbParams(void *aData):
107 CommCommonCbParams(aData)
108 {
109 }
110
111 /* FdeCbParams */
112
113 FdeCbParams::FdeCbParams(void *aData):
114 CommCommonCbParams(aData)
115 {
116 }
117
118 /* CommAcceptCbPtrFun */
119
120 CommAcceptCbPtrFun::CommAcceptCbPtrFun(IOACB *aHandler,
121 const CommAcceptCbParams &aParams):
122 CommDialerParamsT<CommAcceptCbParams>(aParams),
123 handler(aHandler)
124 {
125 }
126
127 CommAcceptCbPtrFun::CommAcceptCbPtrFun(const CommAcceptCbPtrFun &o):
128 CommDialerParamsT<CommAcceptCbParams>(o.params),
129 handler(o.handler)
130 {
131 }
132
133 void
134 CommAcceptCbPtrFun::dial()
135 {
136 handler(params);
137 }
138
139 void
140 CommAcceptCbPtrFun::print(std::ostream &os) const
141 {
142 os << '(';
143 params.print(os);
144 os << ')';
145 }
146
147
148 /* CommConnectCbPtrFun */
149
150 CommConnectCbPtrFun::CommConnectCbPtrFun(CNCB *aHandler,
151 const CommConnectCbParams &aParams):
152 CommDialerParamsT<CommConnectCbParams>(aParams),
153 handler(aHandler)
154 {
155 }
156
157 void
158 CommConnectCbPtrFun::dial()
159 {
160 handler(params.conn, params.flag, params.xerrno, params.data);
161 }
162
163 void
164 CommConnectCbPtrFun::print(std::ostream &os) const
165 {
166 os << '(';
167 params.print(os);
168 os << ')';
169 }
170
171
172 /* CommIoCbPtrFun */
173
174 CommIoCbPtrFun::CommIoCbPtrFun(IOCB *aHandler, const CommIoCbParams &aParams):
175 CommDialerParamsT<CommIoCbParams>(aParams),
176 handler(aHandler)
177 {
178 }
179
180 void
181 CommIoCbPtrFun::dial()
182 {
183 handler(params.conn, params.buf, params.size, params.flag, params.xerrno, params.data);
184 }
185
186 void
187 CommIoCbPtrFun::print(std::ostream &os) const
188 {
189 os << '(';
190 params.print(os);
191 os << ')';
192 }
193
194
195 /* CommCloseCbPtrFun */
196
197 CommCloseCbPtrFun::CommCloseCbPtrFun(CLCB *aHandler,
198 const CommCloseCbParams &aParams):
199 CommDialerParamsT<CommCloseCbParams>(aParams),
200 handler(aHandler)
201 {
202 }
203
204 void
205 CommCloseCbPtrFun::dial()
206 {
207 handler(params);
208 }
209
210 void
211 CommCloseCbPtrFun::print(std::ostream &os) const
212 {
213 os << '(';
214 params.print(os);
215 os << ')';
216 }
217
218 /* CommTimeoutCbPtrFun */
219
220 CommTimeoutCbPtrFun::CommTimeoutCbPtrFun(CTCB *aHandler,
221 const CommTimeoutCbParams &aParams):
222 CommDialerParamsT<CommTimeoutCbParams>(aParams),
223 handler(aHandler)
224 {
225 }
226
227 void
228 CommTimeoutCbPtrFun::dial()
229 {
230 handler(params);
231 }
232
233 void
234 CommTimeoutCbPtrFun::print(std::ostream &os) const
235 {
236 os << '(';
237 params.print(os);
238 os << ')';
239 }
240
241 /* FdeCbPtrFun */
242
243 FdeCbPtrFun::FdeCbPtrFun(FDECB *aHandler, const FdeCbParams &aParams) :
244 CommDialerParamsT<FdeCbParams>(aParams),
245 handler(aHandler)
246 {
247 }
248
249 void
250 FdeCbPtrFun::dial()
251 {
252 handler(params);
253 }
254
255 void
256 FdeCbPtrFun::print(std::ostream &os) const
257 {
258 os << '(';
259 params.print(os);
260 os << ')';
261 }