]> git.ipfire.org Git - thirdparty/squid.git/blob - src/esi/Include.h
Source Format Enforcement (#763)
[thirdparty/squid.git] / src / esi / Include.h
1 /*
2 * Copyright (C) 1996-2021 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 86 ESI processing */
10
11 #ifndef SQUID_ESIINCLUDE_H
12 #define SQUID_ESIINCLUDE_H
13
14 #include "esi/Context.h"
15 #include "esi/Element.h"
16 #include "esi/Segment.h"
17
18 class ESIInclude;
19 typedef RefCount<ESIInclude> ESIIncludePtr;
20
21 class ESIStreamContext : public RefCountable
22 {
23 CBDATA_CLASS(ESIStreamContext);
24
25 public:
26 typedef RefCount<ESIStreamContext> Pointer;
27 ESIStreamContext();
28 ~ESIStreamContext();
29 void freeResources();
30 int finished;
31 ESIIncludePtr include;
32 ESISegment::Pointer localbuffer;
33 ESISegment::Pointer buffer;
34 };
35
36 class ESIInclude : public ESIElement
37 {
38 MEMPROXY_CLASS(ESIInclude);
39
40 public:
41 ESIInclude(esiTreeParentPtr, int attributes, const char **attr, ESIContext *);
42 ~ESIInclude();
43 void render(ESISegment::Pointer);
44 esiProcessResult_t process (int dovars);
45 Pointer makeCacheable() const;
46 Pointer makeUsable(esiTreeParentPtr, ESIVarState &) const;
47 void subRequestDone (ESIStreamContext::Pointer, bool);
48
49 struct {
50 int onerrorcontinue:1; /* on error return zero data */
51 int failed:1; /* Failed to process completely */
52 int finished:1; /* Finished getting subrequest data */
53 } flags;
54 ESIStreamContext::Pointer src;
55 ESIStreamContext::Pointer alt;
56 ESISegment::Pointer srccontent;
57 ESISegment::Pointer altcontent;
58 ESIVarState *varState;
59 char *srcurl, *alturl;
60 void includeFail(ESIStreamContext::Pointer);
61 void finish();
62
63 private:
64 void Start (ESIStreamContext::Pointer, char const *, ESIVarState *);
65 esiTreeParentPtr parent;
66 void start();
67 bool started;
68 bool sent;
69 ESIInclude(ESIInclude const &);
70 bool dataNeeded() const;
71 void prepareRequestHeaders(HttpHeader &tempheaders, ESIVarState *vars);
72 };
73
74 #endif /* SQUID_ESIINCLUDE_H */
75