InOut.h
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 #ifndef SQUID_SRC_ADAPTATION_ICAP_INOUT_H
10 #define SQUID_SRC_ADAPTATION_ICAP_INOUT_H
11 
12 #include "HttpReply.h"
13 
14 // IcapInOut manages a pointer to the HTTP message being worked on.
15 // For HTTP responses, request header information is also available
16 // as the "cause". ICAP transactions use this class to store virgin
17 // and adapted HTTP messages.
18 
19 namespace Adaptation
20 {
21 namespace Icap
22 {
23 
24 class InOut
25 {
26 
27 public:
28  // TODO: s/Header/Message/i ?
30 
31  InOut(): header(nullptr), cause(nullptr) {}
32 
33  ~InOut() {
36  }
37 
38  void setCause(HttpRequest *r) {
39  if (r) {
41  cause = r;
43  } else {
44  assert(!cause);
45  }
46  }
47 
48  void setHeader(Header *h) {
50  header = h;
53  }
54 
55 public:
56  // virgin or adapted message being worked on
57  Header *header; // parsed HTTP status/request line and headers
58 
59  // HTTP request header for HTTP responses (the cause of the response)
61 
62  // Copy of header->body_pipe, in case somebody moves the original.
64 };
65 
66 } // namespace Icap
67 } // namespace Adaptation
68 
69 #endif /* SQUID_SRC_ADAPTATION_ICAP_INOUT_H */
70 
common parts of HttpRequest and HttpReply
Definition: Message.h:25
BodyPipe::Pointer body_pipe
optional pipeline to receive message body
Definition: Message.h:97
BodyPipe::Pointer body_pipe
Definition: InOut.h:63
void setHeader(Header *h)
Definition: InOut.h:48
void HTTPMSGUNLOCK(M *&a)
Definition: Message.h:150
#define assert(EX)
Definition: assert.h:17
void HTTPMSGLOCK(Http::Message *a)
Definition: Message.h:161
HttpRequest * cause
Definition: InOut.h:60
void setCause(HttpRequest *r)
Definition: InOut.h:38
Http::Message Header
Definition: InOut.h:29

 

Introduction

Documentation

Support

Miscellaneous