FunAction.cc
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2023 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 
37 void
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
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 }
void OpenKidSection(StoreEntry *, Format)
Definition: Action.cc:143
RequestId requestId
matches the request[or] with the response
Definition: Request.h:38
void dump(StoreEntry *entry) override
Definition: FunAction.cc:48
FunAction(const CommandPointer &cmd, OBJH *aHandler)
Definition: FunAction.cc:30
bool IsConnOpen(const Comm::ConnectionPointer &conn)
Definition: Connection.cc:27
void CloseKidSection(StoreEntry *, Format)
Definition: Action.cc:155
OBJH * handler
legacy function that collects and dumps info
Definition: FunAction.h:40
void OBJH(StoreEntry *)
Definition: forward.h:44
cache manager request
Definition: Request.h:23
@ fdnHttpSocket
Definition: FdNotes.h:20
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
#define Must(condition)
Definition: TextException.h:75
#define MYNAME
Definition: Stream.h:219
provides Coordinator with a local cache manager response
Definition: Filler.h:23
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:194
RefCount< Action > Pointer
Definition: Action.h:28
#define debugs(SECTION, LEVEL, CONTENT)
Definition: Stream.h:192
static void Start(const Pointer &job)
Definition: AsyncJob.cc:37
Comm::ConnectionPointer conn
HTTP client connection descriptor.
Definition: Request.h:35

 

Introduction

Documentation

Support

Miscellaneous