1 /*
2  * Copyright (C) 1996-2021 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_COMM_UDPOPENDIALER_H
10 #define SQUID_COMM_UDPOPENDIALER_H
11 
12 #include "ipc/StartListening.h"
13 
14 namespace Comm
15 {
16 
17 /// dials a UDP port-opened call
18 class UdpOpenDialer: public CallDialer,
19     public Ipc::StartListeningCb
20 {
21 public:
22     typedef void (*Handler)(const Comm::ConnectionPointer &conn, int errNo);
UdpOpenDialer(Handler aHandler)23     UdpOpenDialer(Handler aHandler): handler(aHandler) {}
24 
print(std::ostream & os)25     virtual void print(std::ostream &os) const { startPrint(os) << ')'; }
canDial(AsyncCall &)26     virtual bool canDial(AsyncCall &) const { return true; }
dial(AsyncCall &)27     virtual void dial(AsyncCall &) { (handler)(conn, errNo); }
28 
29 public:
30     Handler handler;
31 };
32 
33 } // namespace Comm
34 
35 #endif /* SQUID_COMM_UDPOPENDIALER_H */
36 
37