]> git.ipfire.org Git - thirdparty/squid.git/blame - src/base/AsyncCbdataCalls.h
Boilerplate: update copyright blurbs on src/
[thirdparty/squid.git] / src / base / AsyncCbdataCalls.h
CommitLineData
bbc27441
AJ
1/*
2 * Copyright (C) 1996-2014 The Squid Software Foundation and contributors
3 *
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.
7 */
8
37dedc58
AJ
9#ifndef SQUID_BASE_ASYNCCBDATACALLS_H
10#define SQUID_BASE_ASYNCCBDATACALLS_H
11
12#include "base/AsyncCall.h"
13#include "base/CbcPointer.h"
14
15// dialer to run cbdata callback functions as Async Calls
16// to ease the transition of these cbdata objects to full Jobs
17template<class Argument1>
18class UnaryCbdataDialer : public CallDialer
19{
20public:
21 typedef void Handler(Argument1 *);
22
23 UnaryCbdataDialer(Handler *aHandler, Argument1 *aArg) :
24 arg1(aArg),
54544731
A
25 handler(aHandler) {}
26
37dedc58
AJ
27 virtual bool canDial(AsyncCall &call) { return arg1.valid(); }
28 void dial(AsyncCall &call) { handler(arg1.get()); }
29 virtual void print(std::ostream &os) const { os << '(' << arg1 << ')'; }
30
31public:
32 CbcPointer<Argument1> arg1;
33 Handler *handler;
34};
35
36// helper function to simplify Dialer creation.
37template <class Argument1>
38UnaryCbdataDialer<Argument1>
39cbdataDialer(typename UnaryCbdataDialer<Argument1>::Handler *handler, Argument1 *arg1)
40{
41 return UnaryCbdataDialer<Argument1>(handler, arg1);
42}
43
44#endif