SNode.C
Loading...
Searching...
No Matches
VHost.cpp
Go to the documentation of this file.
1
/*
2
* SNode.C - a slim toolkit for network communication
3
* Copyright (C) Volker Christian <me@vchrist.at>
4
* 2020, 2021, 2022, 2023, 2024, 2025
5
*
6
* This program is free software: you can redistribute it and/or modify
7
* it under the terms of the GNU Lesser General Public License as published
8
* by the Free Software Foundation, either version 3 of the License, or
9
* (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public License
17
* along with this program. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
20
#
include
"express/middleware/VHost.h"
21
22
#
ifndef
DOXYGEN_SHOULD_SKIP_THIS
23
24
#
endif
/* DOXYGEN_SHOULD_SKIP_THIS */
25
26
namespace
express::
middleware
{
27
28
VHost
::
VHost
(
const
std::string& host)
29
:
host
(
host
) {
30
use([&host =
this
->host]
MIDDLEWARE
(req, res, next) {
31
if
(req->get(
"Host"
) == host) {
32
next();
33
}
else
{
34
next(
"router"
);
35
}
36
});
37
}
38
39
class
VHost
&
VHost
::instance(
const
std::string& host) {
40
// Keep all created vhost middlewares alive
41
static
std::map<std::string, std::shared_ptr<
class
VHost>> vHostMiddlewares;
42
43
if
(!vHostMiddlewares.contains(host)) {
44
vHostMiddlewares[host] = std::shared_ptr<VHost>(
new
VHost(host));
45
}
46
47
return
*vHostMiddlewares[host];
48
}
49
50
// "Constructor" of StaticMiddleware
51
class
VHost
& VHost(
const
std::string& host) {
52
return
VHost::instance(host);
53
}
54
55
}
// namespace express::middleware
MIDDLEWARE
#define MIDDLEWARE(req, res, next)
Definition
Router.h:40
express::middleware::VHost
Definition
VHost.h:33
express::middleware::VHost::VHost
VHost(const std::string &host)
Definition
VHost.cpp:28
express::middleware
Definition
StaticMiddleware.h:35
express
middleware
VHost.cpp
Generated on Mon Feb 10 2025 20:21:03 for SNode.C by
1.11.0