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