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