XactionRep.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/* DEBUG: section 93 eCAP Interface */
10
11#ifndef SQUID_ECAP_XACTION_REP_H
12#define SQUID_ECAP_XACTION_REP_H
13
16#include "adaptation/Initiate.h"
17#include "adaptation/Message.h"
18#include "BodyPipe.h"
19#include <libecap/common/forward.h>
20#include <libecap/common/memory.h>
21#include <libecap/host/xaction.h>
22#include <libecap/adapter/xaction.h>
23
24namespace Adaptation
25{
26namespace Ecap
27{
28
29/* The eCAP xaction representative maintains information about a single eCAP
30 xaction that Squid communicates with. One eCAP module may register many
31 eCAP xactions. */
33 public BodyConsumer, public BodyProducer
34{
36
37public:
39 ~XactionRep() override;
40
41 typedef libecap::shared_ptr<libecap::adapter::Xaction> AdapterXaction;
42 void master(const AdapterXaction &aMaster); // establish a link
43
44 // libecap::host::Xaction API
45 const libecap::Area option(const libecap::Name &name) const override;
46 void visitEachOption(libecap::NamedValueVisitor &visitor) const override;
47 libecap::Message &virgin() override;
48 const libecap::Message &cause() override;
49 libecap::Message &adapted() override;
50 void useVirgin() override;
51 void useAdapted(const libecap::shared_ptr<libecap::Message> &msg) override;
52 void blockVirgin() override;
53 void adaptationDelayed(const libecap::Delay &) override;
54 void adaptationAborted() override;
55 void resume() override;
56 void vbDiscard() override;
57 void vbMake() override;
58 void vbStopMaking() override;
59 void vbMakeMore() override;
60 libecap::Area vbContent(libecap::size_type offset, libecap::size_type size) override;
61 void vbContentShift(libecap::size_type size) override;
62 void noteAbContentDone(bool atEnd) override;
63 void noteAbContentAvailable() override;
64
65 // BodyProducer API
68
69 // BodyConsumer API
73
74 // Initiate API
75 void noteInitiatorAborted() override;
76
77 // AsyncJob API (via Initiate)
78 void start() override;
79 bool doneAll() const override;
80 void swanSong() override;
81 const char *status() const override;
82
83protected:
85
87
88 void sinkVb(const char *reason);
89 void preserveVb(const char *reason);
90 void forgetVb(const char *reason);
91
92 void moveAbContent();
93
95 void terminateMaster();
96 void scheduleStop(const char *reason);
98
99 const libecap::Area clientIpValue() const;
100 const libecap::Area usernameValue() const;
101 const libecap::Area masterxSharedValue(const libecap::Name &name) const;
103 const libecap::Area metaValue(const libecap::Name &name) const;
105 void visitEachMetaHeader(libecap::NamedValueVisitor &visitor) const;
106
107 void doResume();
108
109private:
110 AdapterXaction theMaster; // the actual adaptation xaction we represent
112
115
116 typedef libecap::shared_ptr<libecap::Message> MessagePtr;
118
120 OperationState makingVb; //< delivering virgin body from pipe to adapter
121 OperationState proxyingAb; // delivering adapted body from adapter to core
123 bool vbProductionFinished; // whether there can be no more vb bytes
124 bool abProductionFinished; // whether adapter has finished producing ab
125 bool abProductionAtEnd; // whether adapter produced a complete ab
127};
128
129} // namespace Ecap
130} // namespace Adaptation
131
132#endif /* SQUID_ECAP_XACTION_REP_H */
133
int size
Definition: ModDevPoll.cc:75
void preserveVb(const char *reason)
Definition: XactionRep.cc:364
const char * status() const override
internal cleanup; do not call directly
Definition: XactionRep.cc:692
bool doneAll() const override
whether positive goal has been reached
Definition: XactionRep.cc:342
void vbMakeMore() override
Definition: XactionRep.cc:535
void noteMoreBodySpaceAvailable(RefCount< BodyPipe > bp) override
Definition: XactionRep.cc:626
Adaptation::ServicePointer theService
xaction's adaptation service
Definition: XactionRep.h:111
void noteMoreBodyDataAvailable(RefCount< BodyPipe > bp) override
Definition: XactionRep.cc:643
libecap::shared_ptr< libecap::Message > MessagePtr
Definition: XactionRep.h:116
void visitEachMetaHeader(libecap::NamedValueVisitor &visitor) const
Return the adaptation meta headers and their values.
Definition: XactionRep.cc:205
const libecap::Area clientIpValue() const
Definition: XactionRep.cc:122
void noteInitiatorAborted() override
Definition: XactionRep.cc:669
void forgetVb(const char *reason)
Definition: XactionRep.cc:380
void start() override
called by AsyncStart; do not call directly
Definition: XactionRep.cc:223
const libecap::Area metaValue(const libecap::Name &name) const
Return the adaptation meta header value for the given header "name".
Definition: XactionRep.cc:182
const libecap::Area usernameValue() const
Definition: XactionRep.cc:147
void adaptationDelayed(const libecap::Delay &) override
Definition: XactionRep.cc:611
void noteAbContentAvailable() override
Definition: XactionRep.cc:593
void adaptationAborted() override
Definition: XactionRep.cc:619
void scheduleStop(const char *reason)
const libecap::Area option(const libecap::Name &name) const override
Definition: XactionRep.cc:87
XactionRep(Http::Message *virginHeader, HttpRequest *virginCause, AccessLogEntry::Pointer &alp, const Adaptation::ServicePointer &service)
Definition: XactionRep.cc:47
libecap::Message & adapted() override
Definition: XactionRep.cc:317
void noteAbContentDone(bool atEnd) override
Definition: XactionRep.cc:583
void updateHistory(Http::Message *adapted)
Definition: XactionRep.cc:459
void blockVirgin() override
Definition: XactionRep.cc:443
void visitEachOption(libecap::NamedValueVisitor &visitor) const override
Definition: XactionRep.cc:103
void vbStopMaking() override
Definition: XactionRep.cc:526
int adaptHistoryId
adaptation history slot reservation
Definition: XactionRep.h:122
void updateSources(Http::Message *adapted)
Definition: XactionRep.cc:735
const libecap::Area masterxSharedValue(const libecap::Name &name) const
Definition: XactionRep.cc:165
Adaptation::Message & answer()
Definition: XactionRep.cc:324
void noteBodyProducerAborted(RefCount< BodyPipe > bp) override
Definition: XactionRep.cc:660
void noteBodyProductionEnded(RefCount< BodyPipe > bp) override
Definition: XactionRep.cc:651
AccessLogEntry::Pointer al
Master transaction AccessLogEntry.
Definition: XactionRep.h:126
libecap::Message & virgin() override
Definition: XactionRep.cc:304
const libecap::Message & cause() override
Definition: XactionRep.cc:310
void master(const AdapterXaction &aMaster)
Definition: XactionRep.cc:72
libecap::shared_ptr< libecap::adapter::Xaction > AdapterXaction
Definition: XactionRep.h:41
libecap::Area vbContent(libecap::size_type offset, libecap::size_type size) override
Definition: XactionRep.cc:545
void sinkVb(const char *reason)
Definition: XactionRep.cc:350
void useAdapted(const libecap::shared_ptr< libecap::Message > &msg) override
Definition: XactionRep.cc:413
void noteBodyConsumerAborted(RefCount< BodyPipe > bp) override
Definition: XactionRep.cc:633
void vbContentShift(libecap::size_type size) override
Definition: XactionRep.cc:569
common parts of HttpRequest and HttpReply
Definition: Message.h:26

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors