]> git.ipfire.org Git - thirdparty/squid.git/blob - src/mgr/FunAction.cc
Maintenance: Removed most NULLs using modernize-use-nullptr (#1075)
[thirdparty/squid.git] / src / mgr / FunAction.cc
1 /*
2 * Copyright (C) 1996-2022 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 /* DEBUG: section 16 Cache Manager API */
10
11 #include "squid.h"
12 #include "base/TextException.h"
13 #include "comm/Connection.h"
14 #include "globals.h"
15 #include "ipc/RequestId.h"
16 #include "ipc/UdsOp.h"
17 #include "mgr/Command.h"
18 #include "mgr/Filler.h"
19 #include "mgr/FunAction.h"
20 #include "mgr/Request.h"
21 #include "Store.h"
22 #include "tools.h"
23
24 Mgr::FunAction::Pointer
25 Mgr::FunAction::Create(const Command::Pointer &aCmd, OBJH* aHandler)
26 {
27 return new FunAction(aCmd, aHandler);
28 }
29
30 Mgr::FunAction::FunAction(const Command::Pointer &aCmd, OBJH* aHandler):
31 Action(aCmd), handler(aHandler)
32 {
33 Must(handler != nullptr);
34 debugs(16, 5, MYNAME);
35 }
36
37 void
38 Mgr::FunAction::respond(const Request& request)
39 {
40 debugs(16, 5, MYNAME);
41 Ipc::ImportFdIntoComm(request.conn, SOCK_STREAM, IPPROTO_TCP, Ipc::fdnHttpSocket);
42 Must(Comm::IsConnOpen(request.conn));
43 Must(request.requestId != 0);
44 AsyncJob::Start(new Mgr::Filler(this, request.conn, request.requestId));
45 }
46
47 void
48 Mgr::FunAction::dump(StoreEntry* entry)
49 {
50 debugs(16, 5, MYNAME);
51 Must(entry != nullptr);
52 if (UsingSmp())
53 storeAppendPrintf(entry, "by kid%d {\n", KidIdentifier);
54 handler(entry);
55 if (atomic() && UsingSmp())
56 storeAppendPrintf(entry, "} by kid%d\n\n", KidIdentifier);
57 }
58