]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/adaptation/Initiate.cc
2 * DEBUG: section 93 ICAP (RFC 3507) Client
7 #include "adaptation/Answer.h"
8 #include "adaptation/Initiator.h"
9 #include "adaptation/Initiate.h"
10 #include "base/AsyncJobCalls.h"
13 Adaptation::Initiate::Initiate(const char *aTypeName
): AsyncJob(aTypeName
)
17 Adaptation::Initiate::~Initiate()
19 // TODO: we cannot assert(!theInitiator) because that fails if a child
20 // constructor fails. AsyncJob should have wasStarted flag so that we
21 // can assert(!(wasStarted && theInitiator)).
25 Adaptation::Initiate::initiator(const CbcPointer
<Initiator
> &i
)
34 void Adaptation::Initiate::swanSong()
36 debugs(93, 5, HERE
<< "swan sings" << status());
38 if (theInitiator
.set()) {
39 debugs(93, 3, HERE
<< "fatal failure; sending abort notification");
40 tellQueryAborted(true); // final by default
43 debugs(93, 5, HERE
<< "swan sang" << status());
46 void Adaptation::Initiate::clearInitiator()
51 void Adaptation::Initiate::sendAnswer(const Answer
&answer
)
53 typedef UnaryMemFunT
<Initiator
, Answer
, const Answer
&> MyDialer
;
54 CallJob(93, 5, __FILE__
, __LINE__
, "Initiator::noteAdaptationAnswer",
55 MyDialer(theInitiator
, &Initiator::noteAdaptationAnswer
, answer
));
60 void Adaptation::Initiate::tellQueryAborted(bool final
)
62 sendAnswer(Answer::Error(final
));
65 const char *Adaptation::Initiate::status() const
67 return AsyncJob::status(); // for now