Squid Web Cache master
Loading...
Searching...
No Matches
AsyncFunCalls.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2025 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
9#ifndef SQUID_SRC_BASE_ASYNCFUNCALLS_H
10#define SQUID_SRC_BASE_ASYNCFUNCALLS_H
11
12#include "base/AsyncCall.h"
13
14#include <iostream>
15
18{
19public:
20 using Handler = void ();
21
22 explicit NullaryFunDialer(Handler * const aHandler): handler(aHandler) {}
23
24 /* CallDialer API */
25 bool canDial(AsyncCall &) { return bool(handler); }
26 void dial(AsyncCall &) { handler(); }
27 void print(std::ostream &os) const override { os << "()"; }
28
29private:
31};
32
34template <typename Argument1>
36{
37public:
39 using Handler = void (Argument1);
40
41 UnaryFunDialer(Handler * const aHandler, Argument1 anArg1):
42 handler(aHandler),
43 arg1(anArg1)
44 {}
45 ~UnaryFunDialer() override = default;
46
47 /* CallDialer API */
48 bool canDial(AsyncCall &) { return bool(handler); }
49 void dial(AsyncCall &) { handler(std::move(arg1)); }
50 void print(std::ostream &os) const final { os << '(' << arg1 << ')'; }
51
52private:
54 Argument1 arg1;
55};
56
58template <typename Argument1>
60callDialer(void (*handler)(Argument1), Argument1 arg1)
61{
62 return UnaryFunDialer<Argument1>(handler, arg1);
63}
64
65#endif /* SQUID_SRC_BASE_ASYNCFUNCALLS_H */
66
UnaryFunDialer< Argument1 > callDialer(void(*handler)(Argument1), Argument1 arg1)
helper function to simplify UnaryFunDialer creation
Calls a function without arguments. See also: NullaryMemFunT.
void print(std::ostream &os) const override
bool canDial(AsyncCall &)
Handler * handler
the function to call (or nil)
void dial(AsyncCall &)
NullaryFunDialer(Handler *const aHandler)
CallDialer for single-parameter stand-alone functions.
void dial(AsyncCall &)
Argument1 arg1
actual call parameter
UnaryFunDialer(Handler *const aHandler, Argument1 anArg1)
void print(std::ostream &os) const final
Handler * handler
the function to call
bool canDial(AsyncCall &)
void(Argument1) Handler
a stand-alone function that receives the parameter given to us
~UnaryFunDialer() override=default