NAWA 0.9
Web Application Framework for C++
HandleRequestFunction.cpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2019-2022 Tobias Flaig.
3 *
4 * This file is part of nawa.
5 *
6 * nawa is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Lesser General Public License,
8 * version 3, as published by the Free Software Foundation.
9 *
10 * nawa is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public License
16 * along with nawa. If not, see <https://www.gnu.org/licenses/>.
17 */
18
25
26using namespace nawa;
27using namespace std;
28
29struct HandleRequestFunctionWrapper::Data {
30 HandleRequestFunction handleRequestFunction;
31 void* reference = nullptr;
32 DestructionCallbackFunction destructionCallback;
33
38 ~Data() {
39 if (destructionCallback) {
40 destructionCallback(reference);
41 }
42 }
43
44 Data(HandleRequestFunction handleRequestFunction, void* reference, DestructionCallbackFunction destructionCallback)
45 : handleRequestFunction(std::move(handleRequestFunction)), reference(reference),
46 destructionCallback(std::move(destructionCallback)) {}
47};
48
50
52 void* reference,
53 DestructionCallbackFunction destructionCallback) {
54 data = make_unique<Data>(std::move(handleRequestFunction), reference, std::move(destructionCallback));
55}
56
58 return data->handleRequestFunction(connection);
59}
Function wrapper for handleRequest functions of nawa apps.
int operator()(nawa::Connection &connection) const
#define NAWA_DEFAULT_DESTRUCTOR_IMPL(Class)
Definition: macros.h:36
Definition: AppInit.h:31
std::function< void(void *)> DestructionCallbackFunction
std::function< int(nawa::Connection &)> HandleRequestFunction