Service.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/* DEBUG: section 93 Adaptation */
10
11#include "squid.h"
12#include "adaptation/Service.h"
14#include "HttpRequest.h"
15
16Adaptation::Service::Service(const ServiceConfigPointer &aConfig): theConfig(aConfig)
17{
18 Must(theConfig != nullptr);
19 debugs(93,3, "creating adaptation service " << cfg().key);
20}
21
23{}
24
25void
27{
28}
29
31{
32 return probed() && !up();
33}
34
35bool
37{
38 if (cfg().method != filter.method)
39 return false;
40
41 if (cfg().point != filter.point)
42 return false;
43
44 // sending a message to a broken service is likely to cause errors
45 if (cfg().bypass && broken())
46 return false;
47
48 if (up()) {
49 // Sending a message to a service that does not want it is useless.
50 // note that we cannot check wantsUrl for service that is not "up"
51 // note that even essential services are skipped on unwanted URLs!
52 return wantsUrl(filter.request->url.path());
53 }
54
55 // The service is down and is either not bypassable or not probed due
56 // to the bypass && broken() test above. Thus, we want to use it!
57 return true;
58}
59
62{
63 static Services *TheServices = new Services;
64 return *TheServices;
65}
66
69{
70 typedef Services::iterator SI;
71 for (SI i = AllServices().begin(); i != AllServices().end(); ++i) {
72 if ((*i)->cfg().key == key)
73 return *i;
74 }
75 return nullptr;
76}
77
79{
80 while (!AllServices().empty()) {
81 AllServices().back()->detach();
82 AllServices().pop_back();
83 }
84}
85
#define Must(condition)
Definition: TextException.h:75
information used to search for adaptation services
Definition: ServiceFilter.h:23
Method method
adaptation direction
Definition: ServiceFilter.h:32
VectPoint point
adaptation location
Definition: ServiceFilter.h:33
HttpRequest * request
HTTP request being adapted or cause; may be nil.
Definition: ServiceFilter.h:34
ServiceConfigPointer theConfig
Definition: Service.h:65
virtual bool broken() const
Definition: Service.cc:30
bool wants(const ServiceFilter &filter) const
Definition: Service.cc:36
const ServiceConfig & cfg() const
Definition: Service.h:51
~Service() override
Definition: Service.cc:22
Service(const ServiceConfigPointer &aConfig)
Definition: Service.cc:16
virtual void finalize()
Definition: Service.cc:26
void path(const char *p)
Definition: Uri.h:101
AnyP::Uri url
the request URI
Definition: HttpRequest.h:115
#define debugs(SECTION, LEVEL, CONTENT)
Definition: Stream.h:194
static AdapterServices TheServices
all loaded services
Definition: ServiceRep.cc:31
Services & AllServices()
Definition: Service.cc:61
std::vector< Adaptation::ServicePointer > Services
Definition: Service.h:70
void DetachServices()
detach all adaptation services from current configuration
Definition: Service.cc:78
ServicePointer FindService(const Service::Id &key)
Definition: Service.cc:68

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors