2 * Copyright (C) 1996-2022 The Squid Software Foundation and contributors
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
9 #ifndef SQUID_BASE_ASYNCCBDATACALLS_H
10 #define SQUID_BASE_ASYNCCBDATACALLS_H
12 #include "base/AsyncCall.h"
13 #include "base/CbcPointer.h"
15 // dialer to run cbdata callback functions as Async Calls
16 // to ease the transition of these cbdata objects to full Jobs
17 template<class Argument1
>
18 class UnaryCbdataDialer
: public CallDialer
21 typedef void Handler(Argument1
*);
23 UnaryCbdataDialer(Handler
*aHandler
, Argument1
*aArg
) :
28 virtual bool canDial(AsyncCall
&) { return arg1
.valid(); }
29 void dial(AsyncCall
&) { handler(arg1
.get()); }
30 void print(std::ostream
&os
) const override
{ os
<< '(' << arg1
<< ')'; }
33 CbcPointer
<Argument1
> arg1
;
37 // helper function to simplify Dialer creation.
38 template <class Argument1
>
39 UnaryCbdataDialer
<Argument1
>
40 cbdataDialer(typename UnaryCbdataDialer
<Argument1
>::Handler
*handler
, Argument1
*arg1
)
42 return UnaryCbdataDialer
<Argument1
>(handler
, arg1
);