Squid Web Cache master
Loading...
Searching...
No Matches
Scheme.cc
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2025 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 29 Authenticator */
10
11#include "squid.h"
12#include "auth/Gadgets.h"
13#include "auth/Scheme.h"
14#include "auth/SchemeConfig.h"
15#include "globals.h"
16
17void
19{
20 iterator i = GetSchemes().begin();
21
22 while (i != GetSchemes().end()) {
23 assert(strcmp((*i)->type(), instance->type()) != 0);
24 ++i;
25 }
26
27 GetSchemes().push_back(instance);
28}
29
31Auth::Scheme::Find(const char *typestr)
32{
33 for (iterator i = GetSchemes().begin(); i != GetSchemes().end(); ++i) {
34 if (strcmp((*i)->type(), typestr) == 0)
35 return *i;
36 }
37
38 return Auth::Scheme::Pointer(nullptr);
39}
40
41std::vector<Auth::Scheme::Pointer> &
43{
44 static const auto schemes = new std::vector<Auth::Scheme::Pointer>;
45 return *schemes;
46}
47
55void
57{
59
60 while (GetSchemes().size()) {
61 Auth::Scheme::Pointer scheme = GetSchemes().back();
62 GetSchemes().pop_back();
63 scheme->shutdownCleanup();
64 }
65}
66
int size
Definition ModDevPoll.cc:70
#define assert(EX)
Definition assert.h:17
static void FreeAll()
Definition Scheme.cc:56
RefCount< Scheme > Pointer
Definition Scheme.h:30
static std::vector< Scheme::Pointer > & GetSchemes()
Definition Scheme.cc:42
static Scheme::Pointer Find(const char *)
Definition Scheme.cc:31
std::vector< Scheme::Pointer >::iterator iterator
Definition Scheme.h:31
static void AddScheme(Scheme::Pointer)
Definition Scheme.cc:18
int shutting_down