]> git.ipfire.org Git - thirdparty/squid.git/blame - src/mgr/Forwarder.h
SourceFormat Enforcement
[thirdparty/squid.git] / src / mgr / Forwarder.h
CommitLineData
8822ebee 1/*
bde978a6 2 * Copyright (C) 1996-2015 The Squid Software Foundation and contributors
8822ebee 3 *
bbc27441
AJ
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.
8822ebee
AR
7 */
8
bbc27441
AJ
9/* DEBUG: section 16 Cache Manager API */
10
8822ebee
AR
11#ifndef SQUID_MGR_FORWARDER_H
12#define SQUID_MGR_FORWARDER_H
13
c3e8e4e9 14#include "comm/forward.h"
51ea0904 15#include "ipc/Forwarder.h"
8822ebee 16#include "mgr/ActionParams.h"
8822ebee 17
8822ebee
AR
18class CommCloseCbParams;
19class HttpRequest;
20class StoreEntry;
21class ErrorState;
22
23namespace Mgr
24{
25
26/** Forwards a single client cache manager request to Coordinator.
27 * Waits for an ACK from Coordinator while holding the Store entry.
28 * Fills the store entry with an error response if forwarding fails.
29 */
51ea0904 30class Forwarder: public Ipc::Forwarder
8822ebee 31{
5c2f68b7
AJ
32 CBDATA_CLASS(Forwarder);
33
8822ebee 34public:
1b76e6c1 35 Forwarder(const Comm::ConnectionPointer &aConn, const ActionParams &aParams, HttpRequest* aRequest,
d9fc6862 36 StoreEntry* anEntry);
8822ebee
AR
37 virtual ~Forwarder();
38
8822ebee 39protected:
51ea0904
CT
40 /* Ipc::Forwarder API */
41 virtual void cleanup(); ///< perform cleanup actions
42 virtual void handleError();
43 virtual void handleTimeout();
44 virtual void handleException(const std::exception& e);
45 virtual void handleRemoteAck();
8822ebee
AR
46
47private:
8822ebee 48 void noteCommClosed(const CommCloseCbParams& params);
51ea0904 49 void sendError(ErrorState* error);
8822ebee
AR
50
51private:
51ea0904 52 HttpRequest* httpRequest; ///< HTTP client request for detailing errors
8822ebee 53 StoreEntry* entry; ///< Store entry expecting the response
1b76e6c1 54 Comm::ConnectionPointer conn; ///< HTTP client connection descriptor
8822ebee 55 AsyncCall::Pointer closer; ///< comm_close handler for the HTTP connection
8822ebee
AR
56};
57
58} // namespace Mgr
59
60#endif /* SQUID_MGR_FORWARDER_H */
f53969cc 61