Pipeline.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 /*
10  * DEBUG: section 33 Client Request Pipeline
11  */
12 #include "squid.h"
13 #include "anyp/PortCfg.h"
14 #include "client_side.h"
15 #include "debug/Stream.h"
16 #include "http/Stream.h"
17 #include "Pipeline.h"
18 
19 void
21 {
22  requests.push_back(c);
23  ++nrequests;
24  debugs(33, 3, "Pipeline " << (void*)this << " add request " << nrequests << ' ' << c);
25 }
26 
29 {
30  if (requests.empty()) {
31  debugs(33, 3, "Pipeline " << (void*)this << " empty");
32  return Http::StreamPointer();
33  }
34 
35  debugs(33, 3, "Pipeline " << (void*)this << " front " << requests.front());
36  return requests.front();
37 }
38 
41 {
42  if (requests.empty()) {
43  debugs(33, 3, "Pipeline " << (void*)this << " empty");
44  return Http::StreamPointer();
45  }
46 
47  debugs(33, 3, "Pipeline " << (void*)this << " back " << requests.back());
48  return requests.back();
49 }
50 
51 void
53 {
54  if (requests.empty())
55  return;
56 
57  debugs(33, 3, "Pipeline " << (void*)this << " drop " << requests.front());
58  // in reality there may be multiple contexts doing processing in parallel.
59  // XXX: pipeline still assumes HTTP/1 FIFO semantics are obeyed.
60  assert(which == requests.front());
61  requests.pop_front();
62 }
63 
void add(const Http::StreamPointer &)
register a new request context to the pipeline
Definition: Pipeline.cc:20
void popMe(const Http::StreamPointer &)
deregister the front request from the pipeline
Definition: Pipeline.cc:52
Http::StreamPointer front() const
get the first request context in the pipeline
Definition: Pipeline.cc:28
Http::StreamPointer back() const
get the last request context in the pipeline
Definition: Pipeline.cc:40
#define assert(EX)
Definition: assert.h:17
uint32_t nrequests
Definition: Pipeline.h:63
RefCount< Http::Stream > StreamPointer
Definition: forward.h:24
std::list< Http::StreamPointer > requests
requests parsed from the connection but not yet completed.
Definition: Pipeline.h:67
#define debugs(SECTION, LEVEL, CONTENT)
Definition: Stream.h:192

 

Introduction

Documentation

Support

Miscellaneous