2 * Copyright (C) 1996-2021 The Squid Software Foundation and contributors
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.
9 /* DEBUG: section 16 Cache Manager API */
11 #ifndef SQUID_MGR_FORWARDER_H
12 #define SQUID_MGR_FORWARDER_H
14 #include "comm/forward.h"
15 #include "ipc/Forwarder.h"
16 #include "log/forward.h"
17 #include "mgr/ActionParams.h"
19 class CommCloseCbParams
;
27 /** Forwards a single client cache manager request to Coordinator.
28 * Waits for an ACK from Coordinator while holding the Store entry.
29 * Fills the store entry with an error response if forwarding fails.
31 class Forwarder
: public Ipc::Forwarder
33 CBDATA_CLASS(Forwarder
);
36 Forwarder(const Comm::ConnectionPointer
&aConn
, const ActionParams
&aParams
, HttpRequest
* aRequest
,
37 StoreEntry
* anEntry
, const AccessLogEntryPointer
&anAle
);
41 /* Ipc::Forwarder API */
42 virtual void swanSong();
43 virtual void handleError();
44 virtual void handleTimeout();
45 virtual void handleException(const std::exception
& e
);
48 void noteCommClosed(const CommCloseCbParams
& params
);
49 void sendError(ErrorState
* error
);
52 HttpRequest
* httpRequest
; ///< HTTP client request for detailing errors
53 StoreEntry
* entry
; ///< Store entry expecting the response
54 Comm::ConnectionPointer conn
; ///< HTTP client connection descriptor
55 AsyncCall::Pointer closer
; ///< comm_close handler for the HTTP connection
56 AccessLogEntryPointer ale
; ///< more transaction details
61 #endif /* SQUID_MGR_FORWARDER_H */