Squid Web Cache master
Loading...
Searching...
No Matches
FunAction.cc
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/* 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
26{
27 return new FunAction(aCmd, aHandler);
28}
29
31 Action(aCmd), handler(aHandler)
32{
33 Must(handler != nullptr);
34 debugs(16, 5, MYNAME);
35}
36
37void
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
47void
49{
50 debugs(16, 5, MYNAME);
51 Must(entry != nullptr);
52
53 OpenKidSection(entry, format());
54
55 handler(entry);
56
57 if (atomic())
58 CloseKidSection(entry, format());
59 // non-atomic() actions must call CloseKidSection() when they are done
60}
#define Must(condition)
static void Start(const Pointer &job)
Definition AsyncJob.cc:37
RequestId requestId
matches the request[or] with the response
Definition Request.h:38
provides Coordinator with a local cache manager response
Definition Filler.h:24
FunAction(const CommandPointer &cmd, OBJH *aHandler)
Definition FunAction.cc:30
void respond(const Request &request) override
respond to Coordinator request; default is to collect and sendResponse
Definition FunAction.cc:38
static Pointer Create(const CommandPointer &cmd, OBJH *aHandler)
Definition FunAction.cc:25
OBJH * handler
legacy function that collects and dumps info
Definition FunAction.h:40
void dump(StoreEntry *entry) override
Definition FunAction.cc:48
cache manager request
Definition Request.h:24
Comm::ConnectionPointer conn
HTTP client connection descriptor.
Definition Request.h:35
#define MYNAME
Definition Stream.h:219
#define debugs(SECTION, LEVEL, CONTENT)
Definition Stream.h:192
void OBJH(StoreEntry *)
Definition forward.h:44
bool IsConnOpen(const Comm::ConnectionPointer &conn)
Definition Connection.cc:27
@ fdnHttpSocket
Definition FdNotes.h:20
const Comm::ConnectionPointer & ImportFdIntoComm(const Comm::ConnectionPointer &conn, int socktype, int protocol, FdNoteId noteId)
import socket fd from another strand into our Comm state
Definition UdsOp.cc:195
void OpenKidSection(StoreEntry *, Format)
Definition Action.cc:144
void CloseKidSection(StoreEntry *, Format)
Definition Action.cc:156