Iterator.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2019 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_ADAPTATION__ITERATOR_H
10 #define SQUID_ADAPTATION__ITERATOR_H
11 
12 #include "AccessLogEntry.h"
13 #include "adaptation/Initiate.h"
14 #include "adaptation/Initiator.h"
16 #include "http/forward.h"
17 
18 namespace Adaptation
19 {
20 
21 /* Iterator is started by client or server Initiators. It iterates services
22  in a given group, starting transaction launcher for each service, according
23  to the service plan. Service plans support adaptation sets and chains.
24 
25  Note: Initiate must be the first parent for cbdata to work. We use
26  a temporary InitiatorHolder/toCbdata hacks and do not call cbdata
27  operations on the initiator directly.
28 */
29 
31 class Iterator: public Initiate, public Initiator
32 {
34 
35 public:
36  Iterator(Http::Message *virginHeader, HttpRequest *virginCause,
38  const Adaptation::ServiceGroupPointer &aGroup);
39  virtual ~Iterator();
40 
41  // Adaptation::Initiate: asynchronous communication with the initiator
42  void noteInitiatorAborted();
43 
44  // Adaptation::Initiator: asynchronous communication with the current launcher
45  virtual void noteAdaptationAnswer(const Answer &answer);
46 
47 protected:
48  // Adaptation::Initiate API implementation
49  virtual void start();
50  virtual bool doneAll() const;
51  virtual void swanSong();
52 
54  void step();
55 
57  bool updatePlan(bool adopt); // returns true iff the plan was replaced
58 
60  ServiceFilter filter() const;
61 
63  void handleAdaptationBlock(const Answer &answer);
64  void handleAdaptationError(bool final);
65 
72  int iterations;
73  bool adapted;
74 };
75 
76 } // namespace Adaptation
77 
78 #endif /* SQUID_ADAPTATION__ITERATOR_H */
79 
iterates services in ServiceGroup, starting adaptation launchers
Definition: Iterator.h:31
summarizes adaptation service answer for the noteAdaptationAnswer() API
Definition: Answer.h:22
void handleAdaptationError(bool final)
Definition: Iterator.cc:175
virtual void swanSong()
Definition: Iterator.cc:215
Iterator(Http::Message *virginHeader, HttpRequest *virginCause, AccessLogEntry::Pointer &alp, const Adaptation::ServiceGroupPointer &aGroup)
Definition: Iterator.cc:22
ServiceFilter filter() const
creates service filter for the current step
Definition: Iterator.cc:266
int iterations
number of steps initiated
Definition: Iterator.h:72
CbcPointer< Adaptation::Initiate > theLauncher
current transaction launcher
Definition: Iterator.h:71
void step()
launches adaptation for the service selected by the plan
Definition: Iterator.cc:71
virtual bool doneAll() const
whether positive goal has been reached
Definition: Iterator.cc:210
bool adapted
whether the virgin message has been replaced
Definition: Iterator.h:73
Http::Message * theMsg
the message being adapted (virgin for each step)
Definition: Iterator.h:68
ServiceGroupPointer theGroup
the service group we are iterating
Definition: Iterator.h:66
bool updatePlan(bool adopt)
replace the current group and plan with service-proposed ones if needed
Definition: Iterator.cc:226
virtual void noteAdaptationAnswer(const Answer &answer)
Definition: Iterator.cc:115
common parts of HttpRequest and HttpReply
Definition: Message.h:25
HttpRequest * theCause
the cause of the original virgin message
Definition: Iterator.h:69
ServicePlan thePlan
which services to use and in what order
Definition: Iterator.h:67
information used to search for adaptation services
Definition: ServiceFilter.h:22
virtual void start()
called by AsyncStart; do not call directly
Definition: Iterator.cc:50
virtual ~Iterator()
Definition: Iterator.cc:43
AccessLogEntry::Pointer al
info for the future access.log entry
Definition: Iterator.h:70
void handleAdaptationBlock(const Answer &answer)
Definition: Iterator.cc:166
void handleAdaptedHeader(Http::Message *msg)
Definition: Iterator.cc:133
void noteInitiatorAborted()
Definition: Iterator.cc:159

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors