diff --git a/storage/ndb/CMakeLists.txt b/storage/ndb/CMakeLists.txt
index 20ab24032da2..8158a0ab0563 100644
--- a/storage/ndb/CMakeLists.txt
+++ b/storage/ndb/CMakeLists.txt
@@ -345,5 +345,4 @@ ADD_SUBDIRECTORY(wix)
IF(WITH_RDRS)
ADD_SUBDIRECTORY(rest-server)
- ADD_SUBDIRECTORY(rest-server2)
ENDIF()
diff --git a/storage/ndb/rest-server2/.gitignore b/storage/ndb/rest-server2/.gitignore
deleted file mode 100644
index 2ef97d2579b7..000000000000
--- a/storage/ndb/rest-server2/.gitignore
+++ /dev/null
@@ -1,19 +0,0 @@
-# Binaries for programs and plugins
-#_
-./build
-./bin
-*.exe
-*.exe~
-*.dll
-*.so
-*.dylib
-*.swp
-
-# Test binary, built with `go test -c`
-*.test
-
-# Output of the go coverage tool, specifically when used with LiteIDE
-*.out
-
-# Dependency directories (remove the comment below to include it)
-# vendor/
\ No newline at end of file
diff --git a/storage/ndb/rest-server2/CMakeLists.txt b/storage/ndb/rest-server2/CMakeLists.txt
deleted file mode 100644
index 08ae1bef6d89..000000000000
--- a/storage/ndb/rest-server2/CMakeLists.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-# This file is part of the RonDB REST API Server
-# Copyright (c) 2023 Hopsworks AB
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, version 3.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-
-add_subdirectory(extra)
-add_subdirectory(server)
diff --git a/storage/ndb/rest-server2/Makefile b/storage/ndb/rest-server2/Makefile
deleted file mode 100644
index cccfd9755240..000000000000
--- a/storage/ndb/rest-server2/Makefile
+++ /dev/null
@@ -1,111 +0,0 @@
-# This file is part of the RonDB REST API Server
-# Copyright (c) 2023 Hopsworks AB
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, version 3.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-
-GITCOMMIT=`git rev-parse --short HEAD`
-BUILDTIME=`date +%FT%T%z`
-HOSTNAME=`hostname`
-BRANCH=`git rev-parse --abbrev-ref HEAD`
-SERVER_BIN="rdrs2"
-
-# config params
-
-# location of the generated binary file
-OUTPUT_DIR?=./bin/server/${SERVER_BIN}
-
-# RonDB build dir that contains libs needed for the API serer
-RDRS_LIB_DIR?=$(PWD)/../../../build/library_output_directory
-
-# Configuration to use for testing
-# testing using mtr: $(PWD)/resources/config/config_mtr.json
-RDRS_CONFIG_FILE?=$(PWD)/resources/config/config_dockertest.json
-
-# Testing. Override this to run a single test. e.g.
-# make test RDRS_CONFIG_FILE=`pwd`/resources/config/config_mtr.json TEST_PACKAGE=hopsworks.ai/rdrs2/internal/integrationtests/pkread TEST=TestDataTypesBlobs/blob1
-TEST?=Test
-TEST_PACKAGE?=./...
-
-# code coverage
-COVERAGE_OUTPUT_FILE?=./coverage.out
-COVERAGE_HTML_OUTPUT_FILE?=./coverage.html
-COVERAGE_FUNC_OUTPUT_FILE?=/dev/stdout
-
-#CGO_LDFLAGS
-MY_CGO_LDFLAGS?="-g -O3 -L${RDRS_LIB_DIR}/ -Wl,-rpath,../lib -Wl,-rpath,${RDRS_LIB_DIR} -lrdrclient"
-
-all: rdrs2
-
-BUILD_COMMAND=go build -ldflags="-w \
- -X hopsworks.ai/rdrs2/version.GITCOMMIT=${GITCOMMIT} \
- -X hopsworks.ai/rdrs2/version.BUILDTIME=${BUILDTIME} \
- -X hopsworks.ai/rdrs2/version.HOSTNAME=${HOSTNAME} \
- -X hopsworks.ai/rdrs2/version.BRANCH=${BRANCH}" \
- -o ${OUTPUT_DIR}/rdrs2 ./cmd/server/main.go
-
-rdrs2:
- export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:${RDRS_LIB_DIR} && \
- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${RDRS_LIB_DIR} && \
- CGO_LDFLAGS=${MY_CGO_LDFLAGS} ${BUILD_COMMAND}
-
-clean:
- go clean -cache
- rm -rf ./bin/*
-
-build_proto:
- protoc --go_out=. --go-grpc_out=. ./api/rdrs2.proto
-
-# By default, unit tests in different packages are run concurrently by the order of CPUs.
-# Using t.Parallel() allows tests within packages to run concurrently.
-# We disallow cross-package concurrency using `-p 1` since some of our tests have side
-# effects such as creating and removing databases. If two tests require the same
-# database, then it may accidentally be deleted by one test whilst the other one
-# is still using it.
-# Info on running tests in parallel in Go:
-# https://stackoverflow.com/a/58987438/9068781
-test:
- @go clean -testcache
- @echo "Getting cross-package (integration) coverage and writing it to $(COVERAGE_OUTPUT_FILE)"
- export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:${RDRS_LIB_DIR} && \
- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${RDRS_LIB_DIR} && \
- export RDRS_CONFIG_FILE=$(RDRS_CONFIG_FILE) && \
- export CGO_LDFLAGS=${MY_CGO_LDFLAGS} && \
- go test -v -p 1 -run $(TEST) -coverprofile $(COVERAGE_OUTPUT_FILE) -coverpkg $(TEST_PACKAGE) `go list $(TEST_PACKAGE) | grep -v cmd`
-
-# Run specific benchmark (remove profiling for better performance):
-# go test -v \
-# -bench BenchmarkSimple \
-# -run=xxx \
-# -benchmem \
-# -benchtime=10s \
-# -cpuprofile cpu.out \
-# -memprofile mem.out \
-# hopsworks.ai/rdrs2/internal/integrationtests/ping
-
-# Run specific unit test:
-# go test \
-# -run TestPing \
-# -cpuprofile cpu.out \
-# -memprofile mem.out \
-# hopsworks.ai/rdrs2/internal/integrationtests/ping
-
-# Otherwise use e.g. `go tool pprof cpu.out` for an interactive CLI
-create-profiling-pdfs:
- go tool pprof -pdf cpu.out > cpu_profile.pdf
- go tool pprof -pdf mem.out > mem_profile.pdf
-
-print-func-coverage: test
- go tool cover -func $(COVERAGE_OUTPUT_FILE) > $(COVERAGE_FUNC_OUTPUT_FILE)
-
-show-html-coverage: test
- go tool cover -html $(COVERAGE_OUTPUT_FILE) -o $(COVERAGE_HTML_OUTPUT_FILE) && xdg-open $(COVERAGE_HTML_OUTPUT_FILE)
diff --git a/storage/ndb/rest-server2/extra/CMakeLists.txt b/storage/ndb/rest-server2/extra/CMakeLists.txt
deleted file mode 100644
index fd35d779a583..000000000000
--- a/storage/ndb/rest-server2/extra/CMakeLists.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-# This file is part of the RonDB REST API Server
-# Copyright (c) 2023 Hopsworks AB
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, version 3.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-
-add_subdirectory(drogon)
-add_subdirectory(simdjson)
diff --git a/storage/ndb/rest-server2/extra/drogon/CMakeLists.txt b/storage/ndb/rest-server2/extra/drogon/CMakeLists.txt
deleted file mode 100644
index 7b9d47e48660..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/CMakeLists.txt
+++ /dev/null
@@ -1,67 +0,0 @@
-# This file is part of the RonDB REST API Server
-# Copyright (c) 2023 Hopsworks AB
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, version 3.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-
-if(NOT WITH_RDRS)
- MESSAGE(STATUS "Skip building Drogon for REST Server")
- RETURN()
-endif()
-
-SET(DROGON_VERSION 1.8.7)
-set(RDRS_DROGON_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/drogon-${DROGON_VERSION})
-set(RDRS_DROGON_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/drogon-${DROGON_VERSION})
-set(RDRS_DROGON_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/drogon-${DROGON_VERSION}/install_dir)
-
-IF(CRYPTO_CUSTOM_LIBRARY)
- SET(RDRS_CRYPTO_LIBRARY ${CRYPTO_CUSTOM_LIBRARY})
-ELSE()
- SET(RDRS_CRYPTO_LIBRARY ${CRYPTO_LIBRARY})
-ENDIF()
-
-IF(OPENSSL_CUSTOM_LIBRARY)
- SET(RDRS_OPENSSL_LIBRARY ${OPENSSL_CUSTOM_LIBRARY})
-ELSE()
- SET(RDRS_OPENSSL_LIBRARY ${OPENSSL_LIBRARY})
-ENDIF()
-
-MESSAGE(STATUS "RDRS DROGON RDRS_OPENSSL_LIBRARY ${RDRS_OPENSSL_LIBRARY}")
-MESSAGE(STATUS "RDRS DROGON RDRS_CRYPTO_LIBRARY ${RDRS_CRYPTO_LIBRARY}")
-
-FILE(WRITE "${RDRS_DROGON_BINARY_DIR}/builder.sh" "
- set -e
- if ! [ -f built ]; then
- cmake \
- -S${RDRS_DROGON_SOURCE_DIR} \
- -B${RDRS_DROGON_BINARY_DIR} \
- -DCMAKE_INSTALL_PREFIX=${RDRS_DROGON_INSTALL_DIR} \
- -DRDRS_OPENSSL_LIBRARY=${RDRS_OPENSSL_LIBRARY} \
- -DRDRS_CRYPTO_LIBRARY=${RDRS_CRYPTO_LIBRARY} \
- -DRDRS_OPENSSL_INCLUDE_DIR=${OPENSSL_INCLUDE_DIR} \
- -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
- make -s -j $(nproc)
- make install
- touch built
- else
- echo Skipping Drogon web framework as it is already built. Delete ${RDRS_DROGON_BINARY_DIR}/built to rebuilt it
- fi"
-)
-
-EXECUTE_PROCESS(COMMAND bash builder.sh WORKING_DIRECTORY ${RDRS_DROGON_BINARY_DIR} COMMAND_ERROR_IS_FATAL ANY)
-ADD_CUSTOM_TARGET(DROGON_IS_BUILD DEPENDS ${RDRS_DROGON_BINARY_DIR}/built)
-
-SET(RDRS_DROGON_CMAKE_MODULES_DIR ${RDRS_DROGON_INSTALL_DIR}/lib/cmake CACHE INTERNAL "Drogon cmake module dir" FORCE)
-SET(RDRS_DROGON_CMAKE_MODULES_DIR_64 ${RDRS_DROGON_INSTALL_DIR}/lib64/cmake CACHE INTERNAL "Drogon cmake module dir" FORCE)
-SET(RDRS_DROGON_INCLUDE_DIR ${RDRS_DROGON_INSTALL_DIR}/include CACHE INTERNAL "(Drogon include dir" FORCE)
-SET(RDRS_DROGON_LIB_DIR ${RDRS_DROGON_INSTALL_DIR}/lib CACHE INTERNAL "(Drogon lib dir" FORCE)
-
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.Doxyfile b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.Doxyfile
deleted file mode 100644
index bd89cb261b4a..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.Doxyfile
+++ /dev/null
@@ -1,2539 +0,0 @@
-# Doxyfile 1.8.16
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a double hash (##) is considered a comment and is placed in
-# front of the TAG it is preceding.
-#
-# All text after a single hash (#) is considered a comment and will be ignored.
-# The format is:
-# TAG = value [value, ...]
-# For lists, items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (\" \").
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the configuration
-# file that follow. The default is UTF-8 which is also the encoding used for all
-# text before the first occurrence of this tag. Doxygen uses libiconv (or the
-# iconv built into libc) for the transcoding. See
-# https://www.gnu.org/software/libiconv/ for the list of possible encodings.
-# The default value is: UTF-8.
-
-DOXYFILE_ENCODING = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
-# double-quotes, unless you are using Doxywizard) that should identify the
-# project for which the documentation is generated. This name is used in the
-# title of most generated pages and in a few other places.
-# The default value is: My Project.
-
-PROJECT_NAME = "Drogon"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
-# could be handy for archiving the generated documentation or if some version
-# control system is used.
-
-PROJECT_NUMBER =
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer a
-# quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF =
-
-# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
-# in the documentation. The maximum height of the logo should not exceed 55
-# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
-# the logo to the output directory.
-
-PROJECT_LOGO =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
-# into which the generated documentation will be written. If a relative path is
-# entered, it will be relative to the location where doxygen was started. If
-# left blank the current directory will be used.
-
-OUTPUT_DIRECTORY =
-
-# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
-# directories (in 2 levels) under the output directory of each output format and
-# will distribute the generated files over these directories. Enabling this
-# option can be useful when feeding doxygen a huge amount of source files, where
-# putting all generated files in the same directory would otherwise causes
-# performance problems for the file system.
-# The default value is: NO.
-
-CREATE_SUBDIRS = NO
-
-# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
-# characters to appear in the names of generated files. If set to NO, non-ASCII
-# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
-# U+3044.
-# The default value is: NO.
-
-ALLOW_UNICODE_NAMES = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
-# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
-# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
-# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
-# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
-# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
-# Ukrainian and Vietnamese.
-# The default value is: English.
-
-OUTPUT_LANGUAGE = English
-
-# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all generated output in the proper direction.
-# Possible values are: None, LTR, RTL and Context.
-# The default value is: None.
-
-OUTPUT_TEXT_DIRECTION = None
-
-# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
-# descriptions after the members that are listed in the file and class
-# documentation (similar to Javadoc). Set to NO to disable this.
-# The default value is: YES.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
-# description of a member or function before the detailed description
-#
-# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-# The default value is: YES.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator that is
-# used to form the text in various listings. Each string in this list, if found
-# as the leading text of the brief description, will be stripped from the text
-# and the result, after processing the whole list, is used as the annotated
-# text. Otherwise, the brief description is used as-is. If left blank, the
-# following values are used ($name is automatically replaced with the name of
-# the entity):The $name class, The $name widget, The $name file, is, provides,
-# specifies, contains, represents, a, an and the.
-
-ABBREVIATE_BRIEF = "The $name class" \
- "The $name widget" \
- "The $name file" \
- is \
- provides \
- specifies \
- contains \
- represents \
- a \
- an \
- the
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# doxygen will generate a detailed section even if there is only a brief
-# description.
-# The default value is: NO.
-
-ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-# The default value is: NO.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
-# before files name in the file list and in the header files. If set to NO the
-# shortest path that makes the file name unique will be used
-# The default value is: YES.
-
-FULL_PATH_NAMES = YES
-
-# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
-# Stripping is only done if one of the specified strings matches the left-hand
-# part of the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the path to
-# strip.
-#
-# Note that you can specify absolute paths here, but also relative paths, which
-# will be relative from the directory where doxygen is started.
-# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-
-STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
-# path mentioned in the documentation of a class, which tells the reader which
-# header file to include in order to use a class. If left blank only the name of
-# the header file containing the class definition is used. Otherwise one should
-# specify the list of include paths that are normally passed to the compiler
-# using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
-# less readable) file names. This can be useful is your file systems doesn't
-# support long names like on DOS, Mac, or CD-ROM.
-# The default value is: NO.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
-# first line (until the first dot) of a Javadoc-style comment as the brief
-# description. If set to NO, the Javadoc-style will behave just like regular Qt-
-# style comments (thus requiring an explicit @brief command for a brief
-# description.)
-# The default value is: NO.
-
-JAVADOC_AUTOBRIEF = NO
-
-# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line
-# such as
-# /***************
-# as being the beginning of a Javadoc-style comment "banner". If set to NO, the
-# Javadoc-style will behave just like regular comments and it will not be
-# interpreted by doxygen.
-# The default value is: NO.
-
-JAVADOC_BANNER = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
-# line (until the first dot) of a Qt-style comment as the brief description. If
-# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
-# requiring an explicit \brief command for a brief description.)
-# The default value is: NO.
-
-QT_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
-# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
-# a brief description. This used to be the default behavior. The new default is
-# to treat a multi-line C++ comment block as a detailed description. Set this
-# tag to YES if you prefer the old behavior instead.
-#
-# Note that setting this tag to YES also means that rational rose comments are
-# not recognized any more.
-# The default value is: NO.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
-# documentation from any documented member that it re-implements.
-# The default value is: YES.
-
-INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
-# page for each member. If set to NO, the documentation of a member will be part
-# of the file/class/namespace that contains it.
-# The default value is: NO.
-
-SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
-# uses this value to replace tabs by spaces in code fragments.
-# Minimum value: 1, maximum value: 16, default value: 4.
-
-TAB_SIZE = 4
-
-# This tag can be used to specify a number of aliases that act as commands in
-# the documentation. An alias has the form:
-# name=value
-# For example adding
-# "sideeffect=@par Side Effects:\n"
-# will allow you to put the command \sideeffect (or @sideeffect) in the
-# documentation, which will result in a user-defined paragraph with heading
-# "Side Effects:". You can put \n's in the value part of an alias to insert
-# newlines (in the resulting output). You can put ^^ in the value part of an
-# alias to insert a newline as if a physical newline was in the original file.
-# When you need a literal { or } or , in the value part of an alias you have to
-# escape them by means of a backslash (\), this can lead to conflicts with the
-# commands \{ and \} for these it is advised to use the version @{ and @} or use
-# a double escape (\\{ and \\})
-
-ALIASES =
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding "class=itcl::class"
-# will allow you to use the command class in the itcl::class meaning.
-
-TCL_SUBST =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C. For
-# instance, some of the names that are used will be different. The list of all
-# members will be omitted, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_FOR_C = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
-# Python sources only. Doxygen will then generate output that is more tailored
-# for that language. For instance, namespaces will be presented as packages,
-# qualified scopes will look different, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources. Doxygen will then generate output that is tailored for Fortran.
-# The default value is: NO.
-
-OPTIMIZE_FOR_FORTRAN = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for VHDL.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_VHDL = NO
-
-# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice
-# sources only. Doxygen will then generate output that is more tailored for that
-# language. For instance, namespaces will be presented as modules, types will be
-# separated into more groups, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_SLICE = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given
-# extension. Doxygen has a built-in mapping, but you can override or extend it
-# using this tag. The format is ext=language, where ext is a file extension, and
-# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
-# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice,
-# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran:
-# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser
-# tries to guess whether the code is fixed or free formatted code, this is the
-# default for Fortran type files), VHDL, tcl. For instance to make doxygen treat
-# .inc files as Fortran files (default is PHP), and .f files as C (default is
-# Fortran), use: inc=Fortran f=C.
-#
-# Note: For files without extension you can use no_extension as a placeholder.
-#
-# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
-# the files are not read by doxygen.
-
-EXTENSION_MAPPING =
-
-# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
-# according to the Markdown format, which allows for more readable
-# documentation. See https://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you can
-# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
-# case of backward compatibilities issues.
-# The default value is: YES.
-
-MARKDOWN_SUPPORT = YES
-
-# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
-# to that level are automatically included in the table of contents, even if
-# they do not have an id attribute.
-# Note: This feature currently applies only to Markdown headings.
-# Minimum value: 0, maximum value: 99, default value: 5.
-# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
-
-TOC_INCLUDE_HEADINGS = 5
-
-# When enabled doxygen tries to link words that correspond to documented
-# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by putting a % sign in front of the word or
-# globally by setting AUTOLINK_SUPPORT to NO.
-# The default value is: YES.
-
-AUTOLINK_SUPPORT = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should set this
-# tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string);
-# versus func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-# The default value is: NO.
-
-BUILTIN_STL_SUPPORT = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-# The default value is: NO.
-
-CPP_CLI_SUPPORT = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
-# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen
-# will parse them like normal C++ but will assume all classes use public instead
-# of private inheritance when no explicit protection keyword is present.
-# The default value is: NO.
-
-SIP_SUPPORT = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate
-# getter and setter methods for a property. Setting this option to YES will make
-# doxygen to replace the get and set methods by a property in the documentation.
-# This will only work if the methods are indeed getting or setting a simple
-# type. If this is not the case, or you want to show the methods anyway, you
-# should set this option to NO.
-# The default value is: YES.
-
-IDL_PROPERTY_SUPPORT = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-# The default value is: NO.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# If one adds a struct or class to a group and this option is enabled, then also
-# any nested class or struct is added to the same group. By default this option
-# is disabled and one has to add nested compounds explicitly via \ingroup.
-# The default value is: NO.
-
-GROUP_NESTED_COMPOUNDS = NO
-
-# Set the SUBGROUPING tag to YES to allow class member groups of the same type
-# (for instance a group of public functions) to be put as a subgroup of that
-# type (e.g. under the Public Functions section). Set it to NO to prevent
-# subgrouping. Alternatively, this can be done per class using the
-# \nosubgrouping command.
-# The default value is: YES.
-
-SUBGROUPING = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
-# are shown inside the group in which they are included (e.g. using \ingroup)
-# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
-# and RTF).
-#
-# Note that this feature does not work in combination with
-# SEPARATE_MEMBER_PAGES.
-# The default value is: NO.
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
-# with only public data fields or simple typedef fields will be shown inline in
-# the documentation of the scope in which they are defined (i.e. file,
-# namespace, or group documentation), provided this scope is documented. If set
-# to NO, structs, classes, and unions are shown on a separate page (for HTML and
-# Man pages) or section (for LaTeX and RTF).
-# The default value is: NO.
-
-INLINE_SIMPLE_STRUCTS = NO
-
-# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
-# enum is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically be
-# useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-# The default value is: NO.
-
-TYPEDEF_HIDES_STRUCT = NO
-
-# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
-# cache is used to resolve symbols given their name and scope. Since this can be
-# an expensive process and often the same symbol appears multiple times in the
-# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
-# doxygen will become slower. If the cache is too large, memory is wasted. The
-# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
-# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
-# symbols. At the end of a run doxygen will report the cache usage and suggest
-# the optimal cache size from a speed point of view.
-# Minimum value: 0, maximum value: 9, default value: 0.
-
-LOOKUP_CACHE_SIZE = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
-# documentation are documented, even if no documentation was available. Private
-# class members and static file members will be hidden unless the
-# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
-# Note: This will also disable the warnings about undocumented members that are
-# normally produced when WARNINGS is set to YES.
-# The default value is: NO.
-
-EXTRACT_ALL = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
-# be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PRIVATE = NO
-
-# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual
-# methods of a class will be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PRIV_VIRTUAL = NO
-
-# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
-# scope will be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PACKAGE = NO
-
-# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
-# included in the documentation.
-# The default value is: NO.
-
-EXTRACT_STATIC = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
-# locally in source files will be included in the documentation. If set to NO,
-# only classes defined in header files are included. Does not have any effect
-# for Java sources.
-# The default value is: YES.
-
-EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. If set to YES, local methods,
-# which are defined in the implementation section but not in the interface are
-# included in the documentation. If set to NO, only methods in the interface are
-# included.
-# The default value is: NO.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base name of
-# the file that contains the anonymous namespace. By default anonymous namespace
-# are hidden.
-# The default value is: NO.
-
-EXTRACT_ANON_NSPACES = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
-# undocumented members inside documented classes or files. If set to NO these
-# members will be included in the various overviews, but no documentation
-# section is generated. This option has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy. If set
-# to NO, these classes will be included in the various overviews. This option
-# has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
-# (class|struct|union) declarations. If set to NO, these declarations will be
-# included in the documentation.
-# The default value is: NO.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
-# documentation blocks found inside the body of a function. If set to NO, these
-# blocks will be appended to the function's detailed documentation block.
-# The default value is: NO.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation that is typed after a
-# \internal command is included. If the tag is set to NO then the documentation
-# will be excluded. Set it to YES to include the internal documentation.
-# The default value is: NO.
-
-INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
-# names in lower-case letters. If set to YES, upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# (including Cygwin) ands Mac users are advised to set this option to NO.
-# The default value is: system dependent.
-
-CASE_SENSE_NAMES = NO
-
-# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
-# their full class and namespace scopes in the documentation. If set to YES, the
-# scope will be hidden.
-# The default value is: NO.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
-# append additional text to a page's title, such as Class Reference. If set to
-# YES the compound reference will be hidden.
-# The default value is: NO.
-
-HIDE_COMPOUND_REFERENCE= NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
-# the files that are included by a file in the documentation of that file.
-# The default value is: YES.
-
-SHOW_INCLUDE_FILES = YES
-
-# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
-# grouped member an include statement to the documentation, telling the reader
-# which file to include in order to use the member.
-# The default value is: NO.
-
-SHOW_GROUPED_MEMB_INC = NO
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
-# files with double quotes in the documentation rather than with sharp brackets.
-# The default value is: NO.
-
-FORCE_LOCAL_INCLUDES = NO
-
-# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
-# documentation for inline members.
-# The default value is: YES.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
-# (detailed) documentation of file and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order.
-# The default value is: YES.
-
-SORT_MEMBER_DOCS = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
-# descriptions of file, namespace and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order. Note that
-# this will also influence the order of the classes in the class list.
-# The default value is: NO.
-
-SORT_BRIEF_DOCS = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
-# (brief and detailed) documentation of class members so that constructors and
-# destructors are listed first. If set to NO the constructors will appear in the
-# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
-# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
-# member documentation.
-# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
-# detailed member documentation.
-# The default value is: NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
-# of group names into alphabetical order. If set to NO the group names will
-# appear in their defined order.
-# The default value is: NO.
-
-SORT_GROUP_NAMES = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
-# fully-qualified names, including namespaces. If set to NO, the class list will
-# be sorted only by class name, not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the alphabetical
-# list.
-# The default value is: NO.
-
-SORT_BY_SCOPE_NAME = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
-# type resolution of all parameters of a function it will reject a match between
-# the prototype and the implementation of a member function even if there is
-# only one candidate or it is obvious which candidate to choose by doing a
-# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
-# accept a match between prototype and implementation in such cases.
-# The default value is: NO.
-
-STRICT_PROTO_MATCHING = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
-# list. This list is created by putting \todo commands in the documentation.
-# The default value is: YES.
-
-GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
-# list. This list is created by putting \test commands in the documentation.
-# The default value is: YES.
-
-GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
-# list. This list is created by putting \bug commands in the documentation.
-# The default value is: YES.
-
-GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
-# the deprecated list. This list is created by putting \deprecated commands in
-# the documentation.
-# The default value is: YES.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional documentation
-# sections, marked by \if ... \endif and \cond
-# ... \endcond blocks.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
-# initial value of a variable or macro / define can have for it to appear in the
-# documentation. If the initializer consists of more lines than specified here
-# it will be hidden. Use a value of 0 to hide initializers completely. The
-# appearance of the value of individual variables and macros / defines can be
-# controlled using \showinitializer or \hideinitializer command in the
-# documentation regardless of this setting.
-# Minimum value: 0, maximum value: 10000, default value: 30.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
-# the bottom of the documentation of classes and structs. If set to YES, the
-# list will mention the files that were used to generate the documentation.
-# The default value is: YES.
-
-SHOW_USED_FILES = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
-# will remove the Files entry from the Quick Index and from the Folder Tree View
-# (if specified).
-# The default value is: YES.
-
-SHOW_FILES = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
-# page. This will remove the Namespaces entry from the Quick Index and from the
-# Folder Tree View (if specified).
-# The default value is: YES.
-
-SHOW_NAMESPACES = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command command input-file, where command is the value of the
-# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
-# by doxygen. Whatever the program writes to standard output is used as the file
-# version. For an example see the documentation.
-
-FILE_VERSION_FILTER =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option. You can
-# optionally specify a file name after the option, if omitted DoxygenLayout.xml
-# will be used as the name of the layout file.
-#
-# Note that if you run doxygen from a directory containing a file called
-# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
-# tag is left empty.
-
-LAYOUT_FILE =
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
-# the reference definitions. This must be a list of .bib files. The .bib
-# extension is automatically appended if omitted. This requires the bibtex tool
-# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info.
-# For LaTeX the style of the bibliography can be controlled using
-# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
-# search path. See also \cite for info how to create references.
-
-CITE_BIB_FILES =
-
-#---------------------------------------------------------------------------
-# Configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated to
-# standard output by doxygen. If QUIET is set to YES this implies that the
-# messages are off.
-# The default value is: NO.
-
-QUIET = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
-# this implies that the warnings are on.
-#
-# Tip: Turn warnings on while writing the documentation.
-# The default value is: YES.
-
-WARNINGS = YES
-
-# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
-# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
-# will automatically be disabled.
-# The default value is: YES.
-
-WARN_IF_UNDOCUMENTED = YES
-
-# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some parameters
-# in a documented function, or documenting parameters that don't exist or using
-# markup commands wrongly.
-# The default value is: YES.
-
-WARN_IF_DOC_ERROR = YES
-
-# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
-# are documented, but have no documentation for their parameters or return
-# value. If set to NO, doxygen will only warn about wrong or incomplete
-# parameter documentation, but not about the absence of documentation. If
-# EXTRACT_ALL is set to YES then this flag will automatically be disabled.
-# The default value is: NO.
-
-WARN_NO_PARAMDOC = NO
-
-# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
-# a warning is encountered.
-# The default value is: NO.
-
-WARN_AS_ERROR = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that doxygen
-# can produce. The string should contain the $file, $line, and $text tags, which
-# will be replaced by the file and line number from which the warning originated
-# and the warning text. Optionally the format may contain $version, which will
-# be replaced by the version of the file (if it could be obtained via
-# FILE_VERSION_FILTER)
-# The default value is: $file:$line: $text.
-
-WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning and error
-# messages should be written. If left blank the output is written to standard
-# error (stderr).
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag is used to specify the files and/or directories that contain
-# documented source files. You may enter file names like myfile.cpp or
-# directories like /usr/src/myproject. Separate the files or directories with
-# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
-# Note: If this tag is empty the current directory is searched.
-
-INPUT = lib/inc \
- orm_lib/inc
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
-# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
-# documentation (see: https://www.gnu.org/software/libiconv/) for the list of
-# possible encodings.
-# The default value is: UTF-8.
-
-INPUT_ENCODING = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
-# *.h) to filter out the source-files in the directories.
-#
-# Note that for custom extensions or not directly supported extensions you also
-# need to set EXTENSION_MAPPING for the extension otherwise the files are not
-# read by doxygen.
-#
-# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
-# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
-# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
-# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,
-# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice.
-
-FILE_PATTERNS = *.c \
- *.cc \
- *.cxx \
- *.cpp \
- *.c++ \
- *.java \
- *.ii \
- *.ixx \
- *.ipp \
- *.i++ \
- *.inl \
- *.idl \
- *.ddl \
- *.odl \
- *.h \
- *.hh \
- *.hxx \
- *.hpp \
- *.h++ \
- *.cs \
- *.d \
- *.php \
- *.php4 \
- *.php5 \
- *.phtml \
- *.inc \
- *.m \
- *.markdown \
- *.md \
- *.mm \
- *.dox \
- *.py \
- *.pyw \
- *.f90 \
- *.f95 \
- *.f03 \
- *.f08 \
- *.f \
- *.for \
- *.tcl \
- *.vhd \
- *.vhdl \
- *.ucf \
- *.qsf \
- *.ice
-
-# The RECURSIVE tag can be used to specify whether or not subdirectories should
-# be searched for input files as well.
-# The default value is: NO.
-
-RECURSIVE = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-#
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
-EXCLUDE =
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-# The default value is: NO.
-
-EXCLUDE_SYMLINKS = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories for example use the pattern */test/*
-
-EXCLUDE_PATTERNS =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories use the pattern */test/*
-
-EXCLUDE_SYMBOLS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or directories
-# that contain example code fragments that are included (see the \include
-# command).
-
-EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank all
-# files are included.
-
-EXAMPLE_PATTERNS = *
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude commands
-# irrespective of the value of the RECURSIVE tag.
-# The default value is: NO.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or directories
-# that contain images that are to be included in the documentation (see the
-# \image command).
-
-IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command:
-#
-#
-#
-# where is the value of the INPUT_FILTER tag, and is the
-# name of an input file. Doxygen will then use the output that the filter
-# program writes to standard output. If FILTER_PATTERNS is specified, this tag
-# will be ignored.
-#
-# Note that the filter must not add or remove lines; it is applied before the
-# code is scanned, but not when the output code is generated. If lines are added
-# or removed, the anchors will not be placed correctly.
-#
-# Note that for custom extensions or not directly supported extensions you also
-# need to set EXTENSION_MAPPING for the extension otherwise the files are not
-# properly processed by doxygen.
-
-INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form: pattern=filter
-# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
-# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
-# patterns match the file name, INPUT_FILTER is applied.
-#
-# Note that for custom extensions or not directly supported extensions you also
-# need to set EXTENSION_MAPPING for the extension otherwise the files are not
-# properly processed by doxygen.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will also be used to filter the input files that are used for
-# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
-# The default value is: NO.
-
-FILTER_SOURCE_FILES = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
-# it is also possible to disable source filtering for a specific pattern using
-# *.ext= (so without naming a filter).
-# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
-
-FILTER_SOURCE_PATTERNS =
-
-# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
-# is part of the input, its contents will be placed on the main page
-# (index.html). This can be useful if you have a project on for instance GitHub
-# and want to reuse the introduction page also for the doxygen output.
-
-USE_MDFILE_AS_MAINPAGE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
-# generated. Documented entities will be cross-referenced with these sources.
-#
-# Note: To get rid of all source code in the generated output, make sure that
-# also VERBATIM_HEADERS is set to NO.
-# The default value is: NO.
-
-SOURCE_BROWSER = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body of functions,
-# classes and enums directly into the documentation.
-# The default value is: NO.
-
-INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
-# special comment blocks from generated source code fragments. Normal C, C++ and
-# Fortran comments will always remain visible.
-# The default value is: YES.
-
-STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
-# entity all documented functions referencing it will be listed.
-# The default value is: NO.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES then for each documented function
-# all documented entities called/used by that function will be listed.
-# The default value is: NO.
-
-REFERENCES_RELATION = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
-# to YES then the hyperlinks from functions in REFERENCES_RELATION and
-# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
-# link to the documentation.
-# The default value is: YES.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
-# source code will show a tooltip with additional information such as prototype,
-# brief description and links to the definition and documentation. Since this
-# will make the HTML file larger and loading of large files a bit slower, you
-# can opt to disable this feature.
-# The default value is: YES.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-SOURCE_TOOLTIPS = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code will
-# point to the HTML generated by the htags(1) tool instead of doxygen built-in
-# source browser. The htags tool is part of GNU's global source tagging system
-# (see https://www.gnu.org/software/global/global.html). You will need version
-# 4.8.6 or higher.
-#
-# To use it do the following:
-# - Install the latest version of global
-# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file
-# - Make sure the INPUT points to the root of the source tree
-# - Run doxygen as normal
-#
-# Doxygen will invoke htags (and that will in turn invoke gtags), so these
-# tools must be available from the command line (i.e. in the search path).
-#
-# The result: instead of the source browser generated by doxygen, the links to
-# source code will now point to the output of htags.
-# The default value is: NO.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
-# verbatim copy of the header file for each class for which an include is
-# specified. Set to NO to disable this.
-# See also: Section \class.
-# The default value is: YES.
-
-VERBATIM_HEADERS = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
-# compounds will be generated. Enable this if the project contains a lot of
-# classes, structs, unions or interfaces.
-# The default value is: YES.
-
-ALPHABETICAL_INDEX = YES
-
-# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
-# which the alphabetical index list will be split.
-# Minimum value: 1, maximum value: 20, default value: 5.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all classes will
-# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
-# can be used to specify a prefix (or a list of prefixes) that should be ignored
-# while generating the index headers.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
-# The default value is: YES.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_OUTPUT = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
-# generated HTML page (for example: .htm, .php, .asp).
-# The default value is: .html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
-# each generated HTML page. If the tag is left blank doxygen will generate a
-# standard header.
-#
-# To get valid HTML the header file that includes any scripts and style sheets
-# that doxygen needs, which is dependent on the configuration options used (e.g.
-# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
-# default header using
-# doxygen -w html new_header.html new_footer.html new_stylesheet.css
-# YourConfigFile
-# and then modify the file new_header.html. See also section "Doxygen usage"
-# for information on how to generate the default header that doxygen normally
-# uses.
-# Note: The header is subject to change so you typically have to regenerate the
-# default header when upgrading to a newer version of doxygen. For a description
-# of the possible markers and block names see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
-# generated HTML page. If the tag is left blank doxygen will generate a standard
-# footer. See HTML_HEADER for more information on how to generate a default
-# footer and what special commands can be used inside the footer. See also
-# section "Doxygen usage" for information on how to generate the default footer
-# that doxygen normally uses.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FOOTER =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
-# sheet that is used by each HTML page. It can be used to fine-tune the look of
-# the HTML output. If left blank doxygen will generate a default style sheet.
-# See also section "Doxygen usage" for information on how to generate the style
-# sheet that doxygen normally uses.
-# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
-# it is more robust and this tag (HTML_STYLESHEET) will in the future become
-# obsolete.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_STYLESHEET =
-
-# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
-# cascading style sheets that are included after the standard style sheets
-# created by doxygen. Using this option one can overrule certain style aspects.
-# This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefore more robust against future updates.
-# Doxygen will copy the style sheet files to the output directory.
-# Note: The order of the extra style sheet files is of importance (e.g. the last
-# style sheet in the list overrules the setting of the previous ones in the
-# list). For an example see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_STYLESHEET =
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
-# files will be copied as-is; there are no commands or markers available.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_FILES =
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
-# will adjust the colors in the style sheet and background images according to
-# this color. Hue is specified as an angle on a colorwheel, see
-# https://en.wikipedia.org/wiki/Hue for more information. For instance the value
-# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
-# purple, and 360 is red again.
-# Minimum value: 0, maximum value: 359, default value: 220.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_HUE = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
-# in the HTML output. For a value of 0 the output will use grayscales only. A
-# value of 255 will produce the most vivid colors.
-# Minimum value: 0, maximum value: 255, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_SAT = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
-# luminance component of the colors in the HTML output. Values below 100
-# gradually make the output lighter, whereas values above 100 make the output
-# darker. The value divided by 100 is the actual gamma applied, so 80 represents
-# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
-# change the gamma.
-# Minimum value: 40, maximum value: 240, default value: 80.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_GAMMA = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting this
-# to YES can help to show when doxygen was last run and thus if the
-# documentation is up to date.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_TIMESTAMP = NO
-
-# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML
-# documentation will contain a main index with vertical navigation menus that
-# are dynamically created via Javascript. If disabled, the navigation index will
-# consists of multiple levels of tabs that are statically embedded in every HTML
-# page. Disable this option to support browsers that do not have Javascript,
-# like the Qt help browser.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_DYNAMIC_MENUS = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_DYNAMIC_SECTIONS = NO
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
-# shown in the various tree structured indices initially; the user can expand
-# and collapse entries dynamically later on. Doxygen will expand the tree to
-# such a level that at most the specified number of entries are visible (unless
-# a fully collapsed tree already exceeds this amount). So setting the number of
-# entries 1 will produce a full collapsed tree by default. 0 is a special value
-# representing an infinite number of entries and will result in a full expanded
-# tree by default.
-# Minimum value: 0, maximum value: 9999, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files will be
-# generated that can be used as input for Apple's Xcode 3 integrated development
-# environment (see: https://developer.apple.com/xcode/), introduced with OSX
-# 10.5 (Leopard). To create a documentation set, doxygen will generate a
-# Makefile in the HTML output directory. Running make will produce the docset in
-# that directory and running make install will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
-# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy
-# genXcode/_index.html for more information.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_DOCSET = NO
-
-# This tag determines the name of the docset feed. A documentation feed provides
-# an umbrella under which multiple documentation sets from a single provider
-# (such as a company or product suite) can be grouped.
-# The default value is: Doxygen generated docs.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_FEEDNAME = "Doxygen generated docs"
-
-# This tag specifies a string that should uniquely identify the documentation
-# set bundle. This should be a reverse domain-name style string, e.g.
-# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_BUNDLE_ID = org.doxygen.Project
-
-# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
-# The default value is: org.doxygen.Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_ID = org.doxygen.Publisher
-
-# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
-# The default value is: Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_NAME = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
-# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
-# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
-# (see: https://www.microsoft.com/en-us/download/details.aspx?id=21138) on
-# Windows.
-#
-# The HTML Help Workshop contains a compiler that can convert all HTML output
-# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
-# files are now used as the Windows 98 help format, and will replace the old
-# Windows help format (.hlp) on all Windows platforms in the future. Compressed
-# HTML files also contain an index, a table of contents, and you can search for
-# words in the documentation. The HTML workshop also contains a viewer for
-# compressed HTML files.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_HTMLHELP = NO
-
-# The CHM_FILE tag can be used to specify the file name of the resulting .chm
-# file. You can add a path in front of the file if the result should not be
-# written to the html output directory.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_FILE =
-
-# The HHC_LOCATION tag can be used to specify the location (absolute path
-# including file name) of the HTML help compiler (hhc.exe). If non-empty,
-# doxygen will try to run the HTML help compiler on the generated index.hhp.
-# The file has to be specified with full path.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-HHC_LOCATION =
-
-# The GENERATE_CHI flag controls if a separate .chi index file is generated
-# (YES) or that it should be included in the master .chm file (NO).
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-GENERATE_CHI = NO
-
-# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
-# and project file content.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_INDEX_ENCODING =
-
-# The BINARY_TOC flag controls whether a binary table of contents is generated
-# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
-# enables the Previous and Next buttons.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members to
-# the table of contents of the HTML help documentation and to the tree view.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-TOC_EXPAND = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
-# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
-# (.qch) of the generated HTML documentation.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_QHP = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
-# the file name of the resulting .qch file. The path specified is relative to
-# the HTML output folder.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QCH_FILE =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
-# Project output. For more information please see Qt Help Project / Namespace
-# (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace).
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_NAMESPACE = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
-# Help Project output. For more information please see Qt Help Project / Virtual
-# Folders (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-
-# folders).
-# The default value is: doc.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_VIRTUAL_FOLDER = doc
-
-# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
-# filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_NAME =
-
-# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_ATTRS =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's filter section matches. Qt Help Project / Filter Attributes (see:
-# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_SECT_FILTER_ATTRS =
-
-# The QHG_LOCATION tag can be used to specify the location of Qt's
-# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
-# generated .qhp file.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHG_LOCATION =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
-# generated, together with the HTML files, they form an Eclipse help plugin. To
-# install this plugin and make it available under the help contents menu in
-# Eclipse, the contents of the directory containing the HTML and XML files needs
-# to be copied into the plugins directory of eclipse. The name of the directory
-# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
-# After copying Eclipse needs to be restarted before the help appears.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_ECLIPSEHELP = NO
-
-# A unique identifier for the Eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have this
-# name. Each documentation set should have its own identifier.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
-
-ECLIPSE_DOC_ID = org.doxygen.Project
-
-# If you want full control over the layout of the generated HTML pages it might
-# be necessary to disable the index and replace it with your own. The
-# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
-# of each HTML page. A value of NO enables the index and the value YES disables
-# it. Since the tabs in the index contain the same information as the navigation
-# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-DISABLE_INDEX = NO
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information. If the tag
-# value is set to YES, a side panel will be generated containing a tree-like
-# index structure (just like the one that is generated for HTML Help). For this
-# to work a browser that supports JavaScript, DHTML, CSS and frames is required
-# (i.e. any modern browser). Windows users are probably better off using the
-# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
-# further fine-tune the look of the index. As an example, the default style
-# sheet generated by doxygen has an example that shows how to put an image at
-# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
-# the same information as the tab index, you could consider setting
-# DISABLE_INDEX to YES when enabling this option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_TREEVIEW = NO
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
-# doxygen will group on one line in the generated HTML documentation.
-#
-# Note that a value of 0 will completely suppress the enum values from appearing
-# in the overview section.
-# Minimum value: 0, maximum value: 20, default value: 4.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-ENUM_VALUES_PER_LINE = 4
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
-# to set the initial width (in pixels) of the frame in which the tree is shown.
-# Minimum value: 0, maximum value: 1500, default value: 250.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-TREEVIEW_WIDTH = 250
-
-# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
-# external symbols imported via tag files in a separate window.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-EXT_LINKS_IN_WINDOW = NO
-
-# Use this tag to change the font size of LaTeX formulas included as images in
-# the HTML documentation. When you change the font size after a successful
-# doxygen run you need to manually remove any form_*.png images from the HTML
-# output directory to force them to be regenerated.
-# Minimum value: 8, maximum value: 50, default value: 10.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_FONTSIZE = 10
-
-# Use the FORMULA_TRANSPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are not
-# supported properly for IE 6.0, but are supported on all modern browsers.
-#
-# Note that when changing this option you need to delete any form_*.png files in
-# the HTML output directory before the changes have effect.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_TRANSPARENT = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
-# https://www.mathjax.org) which uses client side Javascript for the rendering
-# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
-# installed or if you want to formulas look prettier in the HTML output. When
-# enabled you may also need to install MathJax separately and configure the path
-# to it using the MATHJAX_RELPATH option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-USE_MATHJAX = NO
-
-# When MathJax is enabled you can set the default output format to be used for
-# the MathJax output. See the MathJax site (see:
-# http://docs.mathjax.org/en/latest/output.html) for more details.
-# Possible values are: HTML-CSS (which is slower, but has the best
-# compatibility), NativeMML (i.e. MathML) and SVG.
-# The default value is: HTML-CSS.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_FORMAT = HTML-CSS
-
-# When MathJax is enabled you need to specify the location relative to the HTML
-# output directory using the MATHJAX_RELPATH option. The destination directory
-# should contain the MathJax.js script. For instance, if the mathjax directory
-# is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
-# Content Delivery Network so you can quickly see the result without installing
-# MathJax. However, it is strongly recommended to install a local copy of
-# MathJax from https://www.mathjax.org before deployment.
-# The default value is: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
-# extension names that should be enabled during MathJax rendering. For example
-# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_EXTENSIONS =
-
-# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
-# of code that will be used on startup of the MathJax code. See the MathJax site
-# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
-# example see the documentation.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_CODEFILE =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
-# the HTML output. The underlying search engine uses javascript and DHTML and
-# should work on any modern browser. Note that when using HTML help
-# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
-# there is already a search function so this one should typically be disabled.
-# For large projects the javascript based search engine can be slow, then
-# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
-# search using the keyboard; to jump to the search box use + S
-# (what the is depends on the OS and browser, but it is typically
-# , /, or both). Inside the search box use the to jump into the search results window, the results can be navigated
-# using the . Press to select an item or to cancel
-# the search. The filter options can be selected when the cursor is inside the
-# search box by pressing +. Also here use the
-# to select a filter and or to activate or cancel the filter
-# option.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-SEARCHENGINE = YES
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a web server instead of a web client using Javascript. There
-# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
-# setting. When disabled, doxygen will generate a PHP script for searching and
-# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
-# and searching needs to be provided by external tools. See the section
-# "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SERVER_BASED_SEARCH = NO
-
-# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
-# script for searching. Instead the search results are written to an XML file
-# which needs to be processed by an external indexer. Doxygen will invoke an
-# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
-# search results.
-#
-# Doxygen ships with an example indexer (doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: https://xapian.org/).
-#
-# See the section "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH = NO
-
-# The SEARCHENGINE_URL should point to a search engine hosted by a web server
-# which will return the search results when EXTERNAL_SEARCH is enabled.
-#
-# Doxygen ships with an example indexer (doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: https://xapian.org/). See the section "External Indexing and
-# Searching" for details.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHENGINE_URL =
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
-# search data is written to a file for indexing by an external tool. With the
-# SEARCHDATA_FILE tag the name of this file can be specified.
-# The default file is: searchdata.xml.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHDATA_FILE = searchdata.xml
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
-# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
-# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
-# projects and redirect the results back to the right project.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH_ID =
-
-# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
-# projects other than the one defined by this configuration file, but that are
-# all added to the same external search index. Each project needs to have a
-# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
-# to a relative location where the documentation can be found. The format is:
-# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTRA_SEARCH_MAPPINGS =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
-# The default value is: YES.
-
-GENERATE_LATEX = YES
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked.
-#
-# Note that when not enabling USE_PDFLATEX the default is latex when enabling
-# USE_PDFLATEX the default is pdflatex and when in the later case latex is
-# chosen this is overwritten by pdflatex. For specific output languages the
-# default can have been set differently, this depends on the implementation of
-# the output language.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_CMD_NAME =
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
-# index for LaTeX.
-# Note: This tag is used in the Makefile / make.bat.
-# See also: LATEX_MAKEINDEX_CMD for the part in the generated output file
-# (.tex).
-# The default file is: makeindex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to
-# generate index for LaTeX. In case there is no backslash (\) as first character
-# it will be automatically added in the LaTeX code.
-# Note: This tag is used in the generated output file (.tex).
-# See also: MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat.
-# The default value is: makeindex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_MAKEINDEX_CMD = makeindex
-
-# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used by the
-# printer.
-# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
-# 14 inches) and executive (7.25 x 10.5 inches).
-# The default value is: a4.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PAPER_TYPE = a4
-
-# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
-# that should be included in the LaTeX output. The package can be specified just
-# by its name or with the correct syntax as to be used with the LaTeX
-# \usepackage command. To get the times font for instance you can specify :
-# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}
-# To use the option intlimits with the amsmath package you can specify:
-# EXTRA_PACKAGES=[intlimits]{amsmath}
-# If left blank no extra packages will be included.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
-# generated LaTeX document. The header should contain everything until the first
-# chapter. If it is left blank doxygen will generate a standard header. See
-# section "Doxygen usage" for information on how to let doxygen write the
-# default header to a separate file.
-#
-# Note: Only use a user-defined header if you know what you are doing! The
-# following commands have a special meaning inside the header: $title,
-# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
-# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
-# string, for the replacement values of the other commands the user is referred
-# to HTML_HEADER.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HEADER =
-
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
-# generated LaTeX document. The footer should contain everything after the last
-# chapter. If it is left blank doxygen will generate a standard footer. See
-# LATEX_HEADER for more information on how to generate a default footer and what
-# special commands can be used inside the footer.
-#
-# Note: Only use a user-defined footer if you know what you are doing!
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_FOOTER =
-
-# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
-# LaTeX style sheets that are included after the standard style sheets created
-# by doxygen. Using this option one can overrule certain style aspects. Doxygen
-# will copy the style sheet files to the output directory.
-# Note: The order of the extra style sheet files is of importance (e.g. the last
-# style sheet in the list overrules the setting of the previous ones in the
-# list).
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EXTRA_STYLESHEET =
-
-# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the LATEX_OUTPUT output
-# directory. Note that the files will be copied as-is; there are no commands or
-# markers available.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EXTRA_FILES =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
-# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
-# contain links (just like the HTML output) instead of page references. This
-# makes the output suitable for online browsing using a PDF viewer.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PDF_HYPERLINKS = YES
-
-# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
-# the PDF file directly from the LaTeX files. Set this option to YES, to get a
-# higher quality PDF documentation.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-USE_PDFLATEX = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
-# command to the generated LaTeX files. This will instruct LaTeX to keep running
-# if errors occur, instead of asking the user for help. This option is also used
-# when generating formulas in HTML.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BATCHMODE = NO
-
-# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
-# index chapters (such as File Index, Compound Index, etc.) in the output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HIDE_INDICES = NO
-
-# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
-# code with syntax highlighting in the LaTeX output.
-#
-# Note that which sources are shown also depends on other settings such as
-# SOURCE_BROWSER.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_SOURCE_CODE = NO
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. See
-# https://en.wikipedia.org/wiki/BibTeX and \cite for more info.
-# The default value is: plain.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BIB_STYLE = plain
-
-# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
-# page will contain the date and time when the page was generated. Setting this
-# to NO can help when comparing the output of multiple runs.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_TIMESTAMP = NO
-
-# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute)
-# path from which the emoji images will be read. If a relative path is entered,
-# it will be relative to the LATEX_OUTPUT directory. If left blank the
-# LATEX_OUTPUT directory will be used.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EMOJI_DIRECTORY =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
-# RTF output is optimized for Word 97 and may not look too pretty with other RTF
-# readers/editors.
-# The default value is: NO.
-
-GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: rtf.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
-# contain hyperlink fields. The RTF file will contain links (just like the HTML
-# output) instead of page references. This makes the output suitable for online
-# browsing using Word or some other Word compatible readers that support those
-# fields.
-#
-# Note: WordPad (write) and others do not support links.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# configuration file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-#
-# See also section "Doxygen usage" for information on how to generate the
-# default style sheet that doxygen normally uses.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an RTF document. Syntax is
-# similar to doxygen's configuration file. A template extensions file can be
-# generated using doxygen -e rtf extensionFile.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_EXTENSIONS_FILE =
-
-# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code
-# with syntax highlighting in the RTF output.
-#
-# Note that which sources are shown also depends on other settings such as
-# SOURCE_BROWSER.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_SOURCE_CODE = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
-# classes and files.
-# The default value is: NO.
-
-GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it. A directory man3 will be created inside the directory specified by
-# MAN_OUTPUT.
-# The default directory is: man.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to the generated
-# man pages. In case the manual section does not start with a number, the number
-# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
-# optional.
-# The default value is: .3.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_EXTENSION = .3
-
-# The MAN_SUBDIR tag determines the name of the directory created within
-# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
-# MAN_EXTENSION with the initial . removed.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_SUBDIR =
-
-# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
-# will generate one additional man file for each entity documented in the real
-# man page(s). These additional files only source the real man page, but without
-# them the man command would be unable to find the correct page.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_LINKS = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
-# captures the structure of the code including all documentation.
-# The default value is: NO.
-
-GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: xml.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_OUTPUT = xml
-
-# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
-# listings (including syntax highlighting and cross-referencing information) to
-# the XML output. Note that enabling this will significantly increase the size
-# of the XML output.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_PROGRAMLISTING = YES
-
-# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include
-# namespace members in file scope as well, matching the HTML output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_NS_MEMB_FILE_SCOPE = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the DOCBOOK output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
-# that can be used to generate PDF.
-# The default value is: NO.
-
-GENERATE_DOCBOOK = NO
-
-# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
-# front of it.
-# The default directory is: docbook.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_OUTPUT = docbook
-
-# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
-# program listings (including syntax highlighting and cross-referencing
-# information) to the DOCBOOK output. Note that enabling this will significantly
-# increase the size of the DOCBOOK output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_PROGRAMLISTING = NO
-
-#---------------------------------------------------------------------------
-# Configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
-# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures
-# the structure of the code including all documentation. Note that this feature
-# is still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
-# file that captures the structure of the code including all documentation.
-#
-# Note that this feature is still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
-# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
-# output from the Perl module output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
-# formatted so it can be parsed by a human reader. This is useful if you want to
-# understand what is going on. On the other hand, if this tag is set to NO, the
-# size of the Perl module output will be much smaller and Perl will parse it
-# just the same.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file are
-# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
-# so different doxyrules.make files included by the same Makefile don't
-# overwrite each other's variables.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
-# C-preprocessor directives found in the sources and include files.
-# The default value is: YES.
-
-ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
-# in the source code. If set to NO, only conditional compilation will be
-# performed. Macro expansion can be done in a controlled way by setting
-# EXPAND_ONLY_PREDEF to YES.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-MACRO_EXPANSION = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
-# the macro expansion is limited to the macros specified with the PREDEFINED and
-# EXPAND_AS_DEFINED tags.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_ONLY_PREDEF = NO
-
-# If the SEARCH_INCLUDES tag is set to YES, the include files in the
-# INCLUDE_PATH will be searched if a #include is found.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by the
-# preprocessor.
-# This tag requires that the tag SEARCH_INCLUDES is set to YES.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will be
-# used.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that are
-# defined before the preprocessor is started (similar to the -D option of e.g.
-# gcc). The argument of the tag is a list of macros of the form: name or
-# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
-# is assumed. To prevent a macro definition from being undefined via #undef or
-# recursively expanded use the := operator instead of the = operator.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-PREDEFINED =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
-# tag can be used to specify a list of macro names that should be expanded. The
-# macro definition that is found in the sources will be used. Use the PREDEFINED
-# tag if you want to use a different macro definition that overrules the
-# definition found in the source code.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
-# remove all references to function-like macros that are alone on a line, have
-# an all uppercase name, and do not end with a semicolon. Such function macros
-# are typically used for boiler-plate code, and will confuse the parser if not
-# removed.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES tag can be used to specify one or more tag files. For each tag
-# file the location of the external documentation should be added. The format of
-# a tag file without this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where loc1 and loc2 can be relative or absolute paths or URLs. See the
-# section "Linking to external documentation" for more information about the use
-# of tag files.
-# Note: Each tag file must have a unique name (where the name does NOT include
-# the path). If a tag file is not located in the directory in which doxygen is
-# run, you must also specify the path to the tagfile here.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
-# tag file that is based on the input files it reads. See section "Linking to
-# external documentation" for more information about the usage of tag files.
-
-GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
-# the class index. If set to NO, only the inherited external classes will be
-# listed.
-# The default value is: NO.
-
-ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will be
-# listed.
-# The default value is: YES.
-
-EXTERNAL_GROUPS = YES
-
-# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
-# the related pages index. If set to NO, only the current project's pages will
-# be listed.
-# The default value is: YES.
-
-EXTERNAL_PAGES = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
-# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
-# NO turns the diagrams off. Note that this option also works with HAVE_DOT
-# disabled, but it is recommended to install and use dot, since it yields more
-# powerful graphs.
-# The default value is: YES.
-
-CLASS_DIAGRAMS = YES
-
-# You can include diagrams made with dia in doxygen documentation. Doxygen will
-# then run dia to produce the diagram and insert it in the documentation. The
-# DIA_PATH tag allows you to specify the directory where the dia binary resides.
-# If left empty dia is assumed to be found in the default search path.
-
-DIA_PATH =
-
-# If set to YES the inheritance and collaboration graphs will hide inheritance
-# and usage relations if the target is undocumented or is not a class.
-# The default value is: YES.
-
-HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz (see:
-# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
-# Bell Labs. The other options in this section have no effect if this option is
-# set to NO
-# The default value is: NO.
-
-HAVE_DOT = NO
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
-# to run in parallel. When set to 0 doxygen will base this on the number of
-# processors available in the system. You can set it explicitly to a value
-# larger than 0 to get control over the balance between CPU load and processing
-# speed.
-# Minimum value: 0, maximum value: 32, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_NUM_THREADS = 0
-
-# When you want a differently looking font in the dot files that doxygen
-# generates you can specify the font name using DOT_FONTNAME. You need to make
-# sure dot is able to find the font, which can be done by putting it in a
-# standard location or by setting the DOTFONTPATH environment variable or by
-# setting DOT_FONTPATH to the directory containing the font.
-# The default value is: Helvetica.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTNAME = Helvetica
-
-# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
-# dot graphs.
-# Minimum value: 4, maximum value: 24, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTSIZE = 10
-
-# By default doxygen will tell dot to use the default font as specified with
-# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
-# the path where dot can find it using this tag.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTPATH =
-
-# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
-# each documented class showing the direct and indirect inheritance relations.
-# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
-# graph for each documented class showing the direct and indirect implementation
-# dependencies (inheritance, containment, and class references variables) of the
-# class with other documented classes.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-COLLABORATION_GRAPH = YES
-
-# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
-# groups, showing the direct groups dependencies.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GROUP_GRAPHS = YES
-
-# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LOOK = NO
-
-# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
-# class node. If there are many fields or methods and many nodes the graph may
-# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
-# number of items for each type to make the size more manageable. Set this to 0
-# for no limit. Note that the threshold may be exceeded by 50% before the limit
-# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
-# but if the number exceeds 15, the total amount of fields shown is limited to
-# 10.
-# Minimum value: 0, maximum value: 100, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LIMIT_NUM_FIELDS = 10
-
-# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
-# collaboration graphs will show the relations between templates and their
-# instances.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-TEMPLATE_RELATIONS = NO
-
-# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
-# YES then doxygen will generate a graph for each documented file showing the
-# direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDE_GRAPH = YES
-
-# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
-# set to YES then doxygen will generate a graph for each documented file showing
-# the direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command. Disabling a call graph can be
-# accomplished by means of the command \hidecallgraph.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALL_GRAPH = NO
-
-# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command. Disabling a caller graph can be
-# accomplished by means of the command \hidecallergraph.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALLER_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
-# hierarchy of all classes instead of a textual one.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GRAPHICAL_HIERARCHY = YES
-
-# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
-# dependencies a directory has on other directories in a graphical way. The
-# dependency relations are determined by the #include relations between the
-# files in the directories.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DIRECTORY_GRAPH = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. For an explanation of the image formats see the section
-# output formats in the documentation of the dot tool (Graphviz (see:
-# http://www.graphviz.org/)).
-# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
-# to make the SVG files visible in IE 9+ (other browsers do not have this
-# requirement).
-# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo,
-# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and
-# png:gdiplus:gdiplus.
-# The default value is: png.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_IMAGE_FORMAT = png
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-#
-# Note that this requires a modern browser other than Internet Explorer. Tested
-# and working are Firefox, Chrome, Safari, and Opera.
-# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
-# the SVG files visible. Older versions of IE do not have SVG support.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INTERACTIVE_SVG = NO
-
-# The DOT_PATH tag can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the \dotfile
-# command).
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOTFILE_DIRS =
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the \mscfile
-# command).
-
-MSCFILE_DIRS =
-
-# The DIAFILE_DIRS tag can be used to specify one or more directories that
-# contain dia files that are included in the documentation (see the \diafile
-# command).
-
-DIAFILE_DIRS =
-
-# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
-# path where java can find the plantuml.jar file. If left blank, it is assumed
-# PlantUML is not used or called during a preprocessing step. Doxygen will
-# generate a warning when it encounters a \startuml command in this case and
-# will not generate output for the diagram.
-
-PLANTUML_JAR_PATH =
-
-# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a
-# configuration file for plantuml.
-
-PLANTUML_CFG_FILE =
-
-# When using plantuml, the specified paths are searched for files specified by
-# the !include statement in a plantuml block.
-
-PLANTUML_INCLUDE_PATH =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
-# that will be shown in the graph. If the number of nodes in a graph becomes
-# larger than this value, doxygen will truncate the graph, which is visualized
-# by representing a node as a red box. Note that doxygen if the number of direct
-# children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
-# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-# Minimum value: 0, maximum value: 10000, default value: 50.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_GRAPH_MAX_NODES = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
-# generated by dot. A depth value of 3 means that only nodes reachable from the
-# root by following a path via at most 3 edges will be shown. Nodes that lay
-# further from the root node will be omitted. Note that setting this option to 1
-# or 2 may greatly reduce the computation time needed for large code bases. Also
-# note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-# Minimum value: 0, maximum value: 1000, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-MAX_DOT_GRAPH_DEPTH = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not seem
-# to support this out of the box.
-#
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_TRANSPARENT = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10) support
-# this, this feature is disabled by default.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_MULTI_TARGETS = NO
-
-# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
-# explaining the meaning of the various boxes and arrows in the dot generated
-# graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
-# files that are used to generate the various graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_CLEANUP = YES
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.clang-format b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.clang-format
deleted file mode 100644
index 234f6b583089..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.clang-format
+++ /dev/null
@@ -1,151 +0,0 @@
----
-Language: Cpp
-# BasedOnStyle: Google
-AccessModifierOffset: -2
-AlignAfterOpenBracket: Align
-AlignConsecutiveAssignments: false
-AlignConsecutiveDeclarations: false
-AlignEscapedNewlines: Left
-AlignOperands: true
-AlignTrailingComments: true
-AllowAllParametersOfDeclarationOnNextLine: false
-AllowShortBlocksOnASingleLine: false
-AllowShortCaseLabelsOnASingleLine: false
-AllowShortFunctionsOnASingleLine: None
-AllowShortIfStatementsOnASingleLine: false
-AllowShortLoopsOnASingleLine: false
-AlwaysBreakAfterDefinitionReturnType: None
-AlwaysBreakAfterReturnType: None
-AlwaysBreakBeforeMultilineStrings: true
-AlwaysBreakTemplateDeclarations: true
-BinPackArguments: false
-BinPackParameters: false
-BraceWrapping:
- AfterClass: true
- AfterControlStatement: Always
- AfterEnum: true
- AfterFunction: true
- AfterNamespace: true
- AfterObjCDeclaration: false
- AfterStruct: true
- AfterUnion: true
- AfterExternBlock: true
- BeforeCatch: true
- BeforeElse: true
- IndentBraces: false
- SplitEmptyFunction: true
- SplitEmptyRecord: true
- SplitEmptyNamespace: true
- AfterCaseLabel: true
-BreakBeforeBinaryOperators: None
-BreakBeforeBraces: Custom
-BreakBeforeInheritanceComma: false
-BreakInheritanceList: BeforeColon
-BreakBeforeTernaryOperators: true
-BreakConstructorInitializersBeforeComma: false
-BreakConstructorInitializers: BeforeColon
-BreakAfterJavaFieldAnnotations: false
-BreakStringLiterals: true
-ColumnLimit: 80
-CommentPragmas: '^ IWYU pragma:'
-CompactNamespaces: false
-ConstructorInitializerAllOnOneLineOrOnePerLine: true
-ConstructorInitializerIndentWidth: 4
-ContinuationIndentWidth: 4
-Cpp11BracedListStyle: true
-DerivePointerAlignment: true
-DisableFormat: false
-FixNamespaceComments: true
-ForEachMacros:
- - foreach
- - Q_FOREACH
- - BOOST_FOREACH
-IncludeBlocks: Preserve
-IncludeCategories:
- - Regex: '^'
- Priority: 2
- - Regex: '^<.*\.h>'
- Priority: 1
- - Regex: '^<.*'
- Priority: 2
- - Regex: '.*'
- Priority: 3
-IncludeIsMainRegex: '([-_](test|unittest))?$'
-IndentCaseLabels: true
-IndentPPDirectives: None
-IndentWidth: 4
-IndentWrappedFunctionNames: false
-JavaScriptQuotes: Leave
-JavaScriptWrapImports: true
-KeepEmptyLinesAtTheStartOfBlocks: false
-MacroBlockBegin: ''
-MacroBlockEnd: ''
-MaxEmptyLinesToKeep: 1
-NamespaceIndentation: None
-ObjCBinPackProtocolList: Never
-ObjCBlockIndentWidth: 2
-ObjCSpaceAfterProperty: false
-ObjCSpaceBeforeProtocolList: true
-PenaltyBreakAssignment: 2
-PenaltyBreakBeforeFirstCallParameter: 100
-PenaltyBreakComment: 300
-PenaltyBreakFirstLessLess: 120
-PenaltyBreakString: 1000
-PenaltyBreakTemplateDeclaration: 10
-PenaltyExcessCharacter: 1000000
-PenaltyReturnTypeOnItsOwnLine: 2000
-PointerAlignment: Left
-RawStringFormats:
- - Language: Cpp
- Delimiters:
- - cc
- - CC
- - cpp
- - Cpp
- - CPP
- - 'c++'
- - 'C++'
- CanonicalDelimiter: ''
- BasedOnStyle: google
- - Language: TextProto
- Delimiters:
- - pb
- - PB
- - proto
- - PROTO
- EnclosingFunctions:
- - EqualsProto
- - EquivToProto
- - PARSE_PARTIAL_TEXT_PROTO
- - PARSE_TEST_PROTO
- - PARSE_TEXT_PROTO
- - ParseTextOrDie
- - ParseTextProtoOrDie
- CanonicalDelimiter: ''
- BasedOnStyle: google
-ReflowComments: true
-SortIncludes: false
-SortUsingDeclarations: true
-SpaceAfterCStyleCast: false
-SpaceAfterTemplateKeyword: true
-SpaceBeforeAssignmentOperators: true
-SpaceBeforeCpp11BracedList: false
-SpaceBeforeCtorInitializerColon: true
-SpaceBeforeInheritanceColon: true
-SpaceBeforeParens: ControlStatements
-SpaceBeforeRangeBasedForLoopColon: true
-SpaceInEmptyParentheses: false
-SpacesBeforeTrailingComments: 2
-SpacesInAngles: false
-SpacesInContainerLiterals: true
-SpacesInCStyleCastParentheses: false
-SpacesInParentheses: false
-SpacesInSquareBrackets: false
-Standard: Auto
-StatementMacros:
- - Q_UNUSED
- - QT_REQUIRE_VERSION
-TabWidth: 8
-UseTab: Never
-...
-
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.github/FUNDING.yml b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.github/FUNDING.yml
deleted file mode 100644
index 6a4d276aa7ce..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.github/FUNDING.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-# These are supported funding model platforms
-
-github: drogonframework
-patreon: # Replace with a single Patreon username
-open_collective: # Replace with a single Open Collective username
-ko_fi: # Replace with a single Ko-fi username
-tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
-community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
-liberapay: # Replace with a single Liberapay username
-issuehunt: # Replace with a single IssueHunt username
-otechie: # Replace with a single Otechie username
-custom: # ['https://paypal.me/antao2019']
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.github/ISSUE_TEMPLATE/bug_report.md b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index 4a2a3b8eeddc..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-name: Bug report
-about: Create a report to help us improve
-title: ''
-labels: ''
-assignees: ''
-
----
-
-**Notice**
-If you need support or clarification regarding the usage of Drogon in your project, visit the official Drogon support channel at [gitter](https://gitter.im/drogon-web/community)
-
-Please create a new issue only if you think you have found a bug or if have a feature request/enhancement.
-
-**Describe the bug**
-A clear and concise description of what the bug is.
-
-**To Reproduce**
-Steps to reproduce the behavior:
-1. Go to '...'
-2. Click on '....'
-3. Scroll down to '....'
-4. See error
-
-**Expected behavior**
-A clear and concise description of what you expected to happen.
-
-**Screenshots**
-If applicable, add screenshots to help explain your problem.
-
-**Desktop (please complete the following information):**
- - OS: [e.g. iOS]
- - Browser [e.g. chrome, safari]
- - Version [e.g. 22]
-
-**Smartphone (please complete the following information):**
- - Device: [e.g. iPhone6]
- - OS: [e.g. iOS8.1]
- - Browser [e.g. stock browser, safari]
- - Version [e.g. 22]
-
-**Additional context**
-Add any other context about the problem here.
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.github/ISSUE_TEMPLATE/feature_request.md b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index 952bb213bf0d..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-name: Feature request
-about: Suggest an idea for this project
-title: ''
-labels: ''
-assignees: ''
-
----
-
-**Notice**
-If you need support or clarification regarding the usage of Drogon in your project, visit the official Drogon support channel at [gitter](https://gitter.im/drogon-web/community)
-
-Please create a new issue only if you think you have found a bug or if have a feature request/enhancement.
-
-**Is your feature request related to a problem? Please describe.**
-A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
-
-**Describe the solution you'd like**
-A clear and concise description of what you want to happen.
-
-**Describe alternatives you've considered**
-A clear and concise description of any alternative solutions or features you've considered.
-
-**Additional context**
-Add any other context or screenshots about the feature request here.
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.github/workflows/cmake.yml b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.github/workflows/cmake.yml
deleted file mode 100644
index 2149c377b3ec..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.github/workflows/cmake.yml
+++ /dev/null
@@ -1,203 +0,0 @@
-name: Build Drogon
-
-on:
- push:
- branches: [ master ]
- pull_request:
- workflow_dispatch:
-
-env:
- # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
- BUILD_TYPE: Release
-
-jobs:
- windows:
- name: windows/msvc - ${{ matrix.link }}
- runs-on: windows-2019
- strategy:
- fail-fast: false
- matrix:
- link: [ 'STATIC', 'SHARED' ]
- steps:
- - name: Checkout Drogon source code
- uses: actions/checkout@v2
- with:
- submodules: true
- fetch-depth: 0
-
- - name: Install dependencies
- run: pip install conan
-
- - name: Create build directory
- run: mkdir build
-
- - name: Install conan packages
- working-directory: ./build
- run: |
- conan profile detect
- conan install .. -s compiler="msvc" -sbuild_type=Debug --build=missing -s compiler.cppstd=17
-
- - name: Create Build Environment & Configure Cmake
- shell: bash
- working-directory: ./build
- run: |
- [[ ${{ matrix.link }} == "SHARED" ]] && shared="ON" || shared="OFF"
- cmake .. \
- -DCMAKE_BUILD_TYPE=Debug \
- -DBUILD_TESTING=on \
- -DBUILD_SHARED_LIBS=$shared \
- -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake" \
- -DBUILD_CTL=ON \
- -DBUILD_EXAMPLES=ON \
- -DCMAKE_INSTALL_PREFIX=../install \
- -DCMAKE_POLICY_DEFAULT_CMP0091=NEW \
- -DCMAKE_CXX_STANDARD=17
-
- - name: Build
- run: cmake --build build --target install --parallel
-
- - name: Test
- shell: bash
- run: ./test.sh -w
-
- unix:
- name: ${{ matrix.buildname }}
- runs-on: ${{ matrix.os }}
- strategy:
- fail-fast: false
- matrix:
- include:
- - os: ubuntu-20.04
- buildname: 'ubuntu-20.04/gcc'
- link: SHARED
- triplet: x64-linux
- compiler: gcc_64
- - os: ubuntu-20.04
- buildname: 'ubuntu-20.04/gcc'
- link: STATIC
- triplet: x64-linux
- compiler: gcc_64
- - os: ubuntu-20.04
- buildname: 'ubuntu-20.04/gcc-10'
- link: STATIC
- triplet: x64-linux
- - os: ubuntu-20.04
- buildname: 'ubuntu-20.04/c++14'
- link: STATIC
- triplet: x64-linux
- compiler: gcc_64
- - os: macos-latest
- buildname: 'macos/clang'
- link: STATIC
- triplet: x64-osx
- compiler: clang_64
- steps:
- - name: Checkout Drogon source code
- uses: actions/checkout@v2
- with:
- submodules: true
- fetch-depth: 0
-
- - name: (macOS) Install dependencies
- if: runner.os == 'macOS'
- # Already installed: brotli, zlib, postgresql@14, lz4, sqlite3
- run: brew install jsoncpp mariadb hiredis redis
-
- - name: (Linux) Install dependencies
- if: runner.os == 'Linux'
- run: |
- # Installing packages might fail as the github image becomes outdated
- sudo apt update
- # These aren't available or don't work well in vcpkg
- sudo apt-get install -y libjsoncpp-dev uuid-dev libssl-dev zlib1g-dev libsqlite3-dev
- sudo apt-get install -y libbrotli-dev
- - name: (Linux) Install gcc-10
- if: matrix.buildname == 'ubuntu-20.04/gcc-10'
- run: sudo apt-get install -y gcc-10 g++-10
- - name: (Linux) Install boost
- if: matrix.buildname == 'ubuntu-20.04/c++14'
- run: |
- sudo apt-get update
- sudo apt-get -y install libboost-all-dev
-
- - name: (Linux) Install postgresql
- if: matrix.os == 'ubuntu-20.04'
- run: sudo apt-get -y install postgresql-all
-
- - name: Export `shared`
- run: |
- [[ ${{ matrix.link }} == "SHARED" ]] && shared="ON" || shared="OFF"
- echo "shared=$shared" >> $GITHUB_ENV
-
- - name: Create Build Environment & Configure Cmake
- # Some projects don't allow in-source building, so create a separate build directory
- # We'll use this as our working directory for all subsequent commands
- if: matrix.buildname != 'ubuntu-20.04/gcc-10' && matrix.buildname != 'ubuntu-20.04/c++14'
- run: |
- cmake -B build \
- -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
- -DBUILD_TESTING=on \
- -DBUILD_SHARED_LIBS=$shared
-
- - name: Create Build Environment & Configure Cmake (gcc-10)
- # Some projects don't allow in-source building, so create a separate build directory
- # We'll use this as our working directory for all subsequent commands
- if: matrix.buildname == 'ubuntu-20.04/gcc-10'
- run: |
- cmake -B build \
- -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
- -DBUILD_TESTING=on \
- -DCMAKE_CXX_FLAGS="-fcoroutines" \
- -DBUILD_SHARED_LIBS=$shared
- env:
- CC: gcc-10
- CXX: g++-10
-
- - name: Create Build Environment & Configure Cmake (C++14)
- # Some projects don't allow in-source building, so create a separate build directory
- # We'll use this as our working directory for all subsequent commands
- if: matrix.buildname == 'ubuntu-20.04/C++14'
- run: |
- cmake -B build \
- -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
- -DBUILD_TESTING=on \
- -DCMAKE_CXX_STANDARD=14 \
- -DBUILD_SHARED_LIBS=$shared
-
- - name: Build
- working-directory: ./build
- # Execute the build. You can specify a specific target with "--target "
- run: make -j $(nproc) && sudo make install
-
- - name: (macOS) Prepare for testing
- if: runner.os == 'macOS'
- run: |
- brew tap homebrew/services
- brew services restart postgresql@14
- brew services start mariadb
- brew services start redis
- sleep 4
- mariadb -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('')"
- mariadb -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'"
- mariadb -e "FLUSH PRIVILEGES"
- brew services restart mariadb
- sleep 4
- psql -c 'create user postgres superuser;' postgres
-
- - name: (Linux) Prepare for testing
- if: runner.os == 'Linux'
- run: |
- sudo systemctl start postgresql
- sleep 1
- sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '12345'" postgres
-
- - name: Test
- # Execute tests defined by the CMake configuration.
- # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
- run: ./test.sh -t
-
- - name: Lint
- if: matrix.os == 'ubuntu-20.04'
- run: |
- sudo apt install -y dos2unix
- ./format.sh && git diff --exit-code
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.github/workflows/codeql.yml b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.github/workflows/codeql.yml
deleted file mode 100644
index 5e3c2cea46df..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.github/workflows/codeql.yml
+++ /dev/null
@@ -1,76 +0,0 @@
-name: "CodeQL"
-
-on:
- push:
- branches: [ 'master' ]
- pull_request:
- # The branches below must be a subset of the branches above
- branches: [ 'master' ]
- schedule:
- - cron: '46 7 * * 5'
-
-env:
- # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
- BUILD_TYPE: Release
-
-jobs:
- analyze:
- name: Analyze
- runs-on: ubuntu-latest
- permissions:
- actions: read
- contents: read
- security-events: write
-
- strategy:
- fail-fast: false
- matrix:
- language: [ 'cpp' ]
- # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
- # Use only 'java' to analyze code written in Java, Kotlin or both
- # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both
- # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
-
- env:
- SHARED: ON
-
- steps:
- - name: Checkout Drogon source code
- uses: actions/checkout@v2
- with:
- submodules: true
- fetch-depth: 0
-
- - name: Install dependencies
- run: |
- sudo apt update
- sudo apt-get install -y libjsoncpp-dev uuid-dev libssl-dev zlib1g-dev libsqlite3-dev
- sudo apt-get install -y libbrotli-dev
-
- - name: Create Build Environment & Configure Cmake
- run: |
- cmake -B build \
- -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
- -DBUILD_TESTING=on \
- -DBUILD_SHARED_LIBS=$SHARED
-
- # Initializes the CodeQL tools for scanning.
- - name: Initialize CodeQL
- uses: github/codeql-action/init@v2
- with:
- languages: ${{ matrix.language }}
- # If you wish to specify custom queries, you can do so here or in a config file.
- # By default, queries listed here will override any specified in a config file.
- # Prefix the list here with "+" to use these queries and those in the config file.
-
- # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
- # queries: security-extended,security-and-quality
-
- - name: Build
- working-directory: ./build
- run: make -j $(nproc) && sudo make install
-
- - name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v2
- with:
- category: "/language:${{matrix.language}}"
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.gitignore b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.gitignore
deleted file mode 100755
index 6f29d6bfc529..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.gitignore
+++ /dev/null
@@ -1,50 +0,0 @@
-# Prerequisites
-*.d
-
-# Compiled Object files
-*.slo
-*.lo
-*.o
-*.obj
-
-# Precompiled Headers
-*.gch
-*.pch
-
-# Compiled Dynamic libraries
-*.so
-*.dylib
-*.dll
-
-# Fortran module files
-*.mod
-*.smod
-
-# Compiled Static libraries
-*.lai
-*.la
-*.a
-*.lib
-
-# Executables
-*.exe
-*.out
-*.app
-
-build/
-cmake-build-debug/
-cmake-build-debug-visual-studio/
-.idea/
-lib/inc/drogon/version.h
-html/
-latex/
-.vscode
-*.kdev4
-.cproject
-.project
-.settings/
-.vs/
-CMakeSettings.json
-install
-trace.json
-.cache/
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.gitmodules b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.gitmodules
deleted file mode 100755
index eeeaa0d6edb3..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "trantor"]
- path = trantor
- url = https://github.com/an-tao/trantor.git
\ No newline at end of file
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/CMakeLists.txt b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/CMakeLists.txt
deleted file mode 100755
index 0d4645eb3f48..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/CMakeLists.txt
+++ /dev/null
@@ -1,881 +0,0 @@
-cmake_minimum_required(VERSION 3.5)
-
-project(drogon)
-
-message(STATUS "compiler: " ${CMAKE_CXX_COMPILER_ID})
-
-option(BUILD_CTL "Build drogon_ctl" ON)
-option(BUILD_EXAMPLES "Build examples" ON)
-option(BUILD_ORM "Build orm" ON)
-option(COZ_PROFILING "Use coz for profiling" OFF)
-option(BUILD_SHARED_LIBS "Build drogon as a shared lib" OFF)
-option(BUILD_DOC "Build Doxygen documentation" OFF)
-option(BUILD_BROTLI "Build Brotli" ON)
-option(BUILD_YAML_CONFIG "Build yaml config" ON)
-option(USE_SUBMODULE "Use trantor as a submodule" ON)
-
-include(CMakeDependentOption)
-CMAKE_DEPENDENT_OPTION(BUILD_POSTGRESQL "Build with postgresql support" ON "BUILD_ORM" OFF)
-CMAKE_DEPENDENT_OPTION(LIBPQ_BATCH_MODE "Use batch mode for libpq" ON "BUILD_POSTGRESQL" OFF)
-CMAKE_DEPENDENT_OPTION(BUILD_MYSQL "Build with mysql support" ON "BUILD_ORM" OFF)
-CMAKE_DEPENDENT_OPTION(BUILD_SQLITE "Build with sqlite3 support" ON "BUILD_ORM" OFF)
-CMAKE_DEPENDENT_OPTION(BUILD_REDIS "Build with redis support" ON "BUILD_ORM" OFF)
-
-set(DROGON_MAJOR_VERSION 1)
-set(DROGON_MINOR_VERSION 8)
-set(DROGON_PATCH_VERSION 7)
-set(DROGON_VERSION
- ${DROGON_MAJOR_VERSION}.${DROGON_MINOR_VERSION}.${DROGON_PATCH_VERSION})
-set(DROGON_VERSION_STRING "${DROGON_VERSION}")
-
-include(GNUInstallDirs)
-# Offer the user the choice of overriding the installation directories
-set(INSTALL_LIB_DIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Installation directory for libraries")
-set(INSTALL_BIN_DIR ${CMAKE_INSTALL_BINDIR} CACHE PATH "Installation directory for executables")
-set(INSTALL_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "Installation directory for header files")
-set(DEF_INSTALL_DROGON_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/Drogon)
-set(INSTALL_DROGON_CMAKE_DIR ${DEF_INSTALL_DROGON_CMAKE_DIR}
- CACHE PATH "Installation directory for cmake files")
-
-if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
- # Force MSVC to use UTF-8 because that's what we use. Otherwise it uses
- # the default of whatever Windows sets and causes encoding issues.
- message(STATUS "You are using MSVC. Forceing to use UTF-8")
- add_compile_options("$<$:/utf-8>")
- add_compile_options("$<$:/utf-8>")
-endif ()
-
-add_library(${PROJECT_NAME})
-if (BUILD_SHARED_LIBS)
- find_package(Threads)
- # set(BUILD_EXAMPLES FALSE)
- list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
- "${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB_DIR}" isSystemDir)
- if ("${isSystemDir}" STREQUAL "-1")
- set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB_DIR}")
- endif ("${isSystemDir}" STREQUAL "-1")
- set_target_properties(${PROJECT_NAME} PROPERTIES
- VERSION ${DROGON_VERSION}
- SOVERSION ${DROGON_MAJOR_VERSION})
- target_link_libraries(${PROJECT_NAME} PUBLIC Threads::Threads)
- if (WIN32)
- target_link_libraries(${PROJECT_NAME} PUBLIC Rpcrt4 ws2_32 crypt32 Advapi32)
- if (CMAKE_CXX_COMPILER_ID MATCHES MSVC)
- # Ignore MSVC C4251 and C4275 warning of exporting std objects with no dll export
- # We export class to facilitate maintenance, thus if you compile
- # drogon on windows as a shared library, you will need to use
- # exact same compiler for drogon and your app.
- target_compile_options(${PROJECT_NAME} PUBLIC /wd4251 /wd4275)
- endif ()
- endif ()
-endif (BUILD_SHARED_LIBS)
-
-if (NOT ${CMAKE_PLATFORM_NAME} STREQUAL "Windows" AND CMAKE_CXX_COMPILER_ID MATCHES GNU)
- target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Werror)
-endif ()
-
-include(GenerateExportHeader)
-generate_export_header(${PROJECT_NAME} EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/exports/drogon/exports.h)
-
-include(cmake/DrogonUtilities.cmake)
-include(cmake/ParseAndAddDrogonTests.cmake)
-include(CheckIncludeFileCXX)
-
-check_include_file_cxx(any HAS_ANY)
-check_include_file_cxx(string_view HAS_STRING_VIEW)
-check_include_file_cxx(coroutine HAS_COROUTINE)
-if (NOT "${CMAKE_CXX_STANDARD}" STREQUAL "")
- set(DROGON_CXX_STANDARD ${CMAKE_CXX_STANDARD})
-elseif (HAS_ANY AND HAS_STRING_VIEW AND HAS_COROUTINE)
- set(DROGON_CXX_STANDARD 20)
-elseif (HAS_ANY AND HAS_STRING_VIEW)
- set(DROGON_CXX_STANDARD 17)
-else ()
- set(DROGON_CXX_STANDARD 14)
-endif ()
-if(USE_SUBMODULE)
- target_include_directories(
- ${PROJECT_NAME}
- PUBLIC
- $)
-endif()
-target_include_directories(
- ${PROJECT_NAME}
- PUBLIC $
- $
- $
- $
- $
- $)
-
-if (WIN32)
- target_include_directories(
- ${PROJECT_NAME}
- PRIVATE $)
-endif (WIN32)
-
-if(USE_SUBMODULE)
-add_subdirectory(trantor)
-target_link_libraries(${PROJECT_NAME} PUBLIC trantor)
-else()
-find_package(Trantor CONFIG REQUIRED)
-target_link_libraries(${PROJECT_NAME} PUBLIC Trantor::Trantor)
-endif()
-
-if(${CMAKE_SYSTEM_NAME} STREQUAL "Haiku")
- target_link_libraries(${PROJECT_NAME} PRIVATE network)
-elseif (NOT WIN32 AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
- target_link_libraries(${PROJECT_NAME} PRIVATE dl)
-elseif (WIN32)
- target_link_libraries(${PROJECT_NAME} PRIVATE shlwapi)
-endif ()
-
-list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules/)
-
-find_package(Filesystem COMPONENTS Final)
-if(CXX_FILESYSTEM_HAVE_FS)
- message(STATUS "Found std::filesystem")
-endif()
-
-# Check for C++ filesystem support
-set(NEED_BOOST_FS 0)
-if (DROGON_CXX_STANDARD EQUAL 14)
- # With C++14, use Boost to support any and string_view
- message(STATUS "use c++14")
- find_package(Boost 1.61.0 REQUIRED)
- message(STATUS "Using Boost filesystem, string_view and any")
- message(STATUS "Boost include dir: " ${Boost_INCLUDE_DIR})
- target_link_libraries(${PROJECT_NAME} PUBLIC Boost::boost)
- list(APPEND INCLUDE_DIRS_FOR_DYNAMIC_VIEW ${Boost_INCLUDE_DIR})
- set(NEED_BOOST_FS 1)
-elseif (DROGON_CXX_STANDARD EQUAL 17)
- # With C++17, use Boost if std::filesystem::path is missing
- message(STATUS "use c++17")
-
- # Check for partial implementation of c++17 (Windows/OSX only?)
- if (CXX_FILESYSTEM_HAVE_FS)
- set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
- try_compile(check_filesystem_path ${CMAKE_BINARY_DIR}/cmaketest
- ${PROJECT_SOURCE_DIR}/cmake/tests/check_has_std_filesystem_path.cc
- CXX_STANDARD 17)
- set(CMAKE_TRY_COMPILE_TARGET_TYPE)
- if (NOT check_filesystem_path)
- message(STATUS "The std::filesystem seems to be a partial implementation"
- " Falling back to boost::filesystem")
- set(NEED_BOOST_FS 1)
- endif()
- else()
- set(NEED_BOOST_FS 1)
- endif()
-else ()
- message(STATUS "use c++20")
-endif ()
-
-# Workaround: 2021-08-09 Android NDK does not provide proper std::filesystem
-# support. Force boost::filesystem instead.
-if (${CMAKE_SYSTEM_NAME} STREQUAL "Android")
- message(STATUS "WORKAROUND: Forcing boost::filesystem on Android")
- set(NEED_BOOST_FS 1)
-endif ()
-
-if(NEED_BOOST_FS)
- find_package(Boost 1.49.0 COMPONENTS filesystem system REQUIRED)
- message(STATUS "Using Boost filesytem::path")
- message(STATUS "Boost include dir: " ${Boost_INCLUDE_DIR})
- include_directories(${BOOST_INCLUDE_DIRS})
- message(STATUS "Boost libraries: " ${Boost_LIBRARIES})
- target_link_libraries(${PROJECT_NAME} PUBLIC Boost::filesystem Boost::system)
- list(APPEND INCLUDE_DIRS_FOR_DYNAMIC_VIEW ${Boost_INCLUDE_DIR})
- option(HAS_STD_FILESYSTEM_PATH "use boost::filesystem" OFF)
-else()
- option(HAS_STD_FILESYSTEM_PATH "use std::filesystem" ON)
- # HACK: Needed to be compiled on Yocto Linux
- if(TARGET std::filesystem)
- get_property(CAN_LINK_FS TARGET std::filesystem PROPERTY INTERFACE_LINK_LIBRARIES SET)
- if ( CAN_LINK_FS )
- target_link_libraries(${PROJECT_NAME} PUBLIC std::filesystem)
- endif()
- endif()
-endif()
-
-# jsoncpp
-
-find_package(Jsoncpp QUIET)
-if(NOT Jsoncpp_FOUND)
- message(STATUS "Jsoncpp NOT FOUND")
-
- # Provide suggestions for how to install the missing package
- if(APPLE)
- message("\n\nOn macOS, you can use Homebrew to install Jsoncpp:")
- message(" brew install jsoncpp\n\n")
- elseif(UNIX)
- message("\n\nOn Linux, you can use your package manager to install Jsoncpp:")
- message(" sudo apt-get install libjsoncpp-dev # For Debian/Ubuntu")
- message(" sudo dnf install jsoncpp-devel # For Red Hat/Fedora\n\n")
- endif()
-
- message(FATAL_ERROR "Failed to configure drogon. Jsoncpp NOT FOUND")
-endif()
-
-target_link_libraries(${PROJECT_NAME} PUBLIC Jsoncpp_lib)
-list(APPEND INCLUDE_DIRS_FOR_DYNAMIC_VIEW ${JSONCPP_INCLUDE_DIRS})
-
-# yamlcpp
-if(BUILD_YAML_CONFIG)
- find_package(yaml-cpp QUIET)
- if(yaml-cpp_FOUND)
- if (NOT YAML_CPP_LIBRARIES)
- find_library(YAML_CPP_LINK_LIBRARY "yaml-cpp")
- if(NOT YAML_CPP_LINK_LIBRARY)
- message(STATUS "yaml-cpp not used")
- else()
- message(STATUS "yaml-cpp found ")
- target_link_libraries(${PROJECT_NAME} PUBLIC ${YAML_CPP_LINK_LIBRARY})
- target_compile_definitions(${PROJECT_NAME} PUBLIC HAS_YAML_CPP)
- endif()
- else()
- message(STATUS "yaml-cpp found ")
- target_link_libraries(${PROJECT_NAME} PUBLIC ${YAML_CPP_LIBRARIES})
- target_compile_definitions(${PROJECT_NAME} PUBLIC HAS_YAML_CPP)
- endif()
- else()
- message(STATUS "yaml-cpp not used")
- endif()
-else()
- message(STATUS "yaml-cpp not used")
-endif(BUILD_YAML_CONFIG)
-
-if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD"
- AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD"
- AND NOT WIN32)
- find_package(UUID QUIET)
-
- if(NOT UUID_FOUND)
- message(STATUS "UUID NOT FOUND")
-
- # Provide suggestions for how to install the missing package
- if(APPLE)
- message("\n\nOn macOS, you can use Homebrew to install UUID:")
- message(" brew install ossp-uuid\n\n")
- elseif(UNIX)
- message("\n\nOn Linux, you can use your package manager to install UUID:")
- message(" sudo apt-get install uuid-dev # For Debian/Ubuntu")
- message(" sudo dnf install uuid-devel # For Red Hat/Fedora\n\n")
- endif()
-
- message(FATAL_ERROR "Failed to configure drogon. UUID NOT FOUND")
- endif()
-
- target_link_libraries(${PROJECT_NAME} PRIVATE UUID_lib)
-
- try_compile(normal_uuid ${CMAKE_BINARY_DIR}/cmaketest
- ${PROJECT_SOURCE_DIR}/cmake/tests/normal_uuid_lib_test.cc
- LINK_LIBRARIES UUID_lib
- OUTPUT_VARIABLE NORMAL_UUID_COMPILE_OUTPUT)
- try_compile(ossp_uuid ${CMAKE_BINARY_DIR}/cmaketest
- ${PROJECT_SOURCE_DIR}/cmake/tests/ossp_uuid_lib_test.cc
- LINK_LIBRARIES UUID_lib
- OUTPUT_VARIABLE OSSP_UUID_COMPILE_OUTPUT)
- if (normal_uuid)
- add_definitions(-DUSE_OSSP_UUID=0)
- elseif (ossp_uuid)
- add_definitions(-DUSE_OSSP_UUID=1)
- else ()
- message(FATAL_ERROR "uuid lib error:\n${NORMAL_UUID_COMPILE_OUTPUT}\n${OSSP_UUID_COMPILE_OUTPUT}")
- endif ()
-endif (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD"
- AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD"
- AND NOT WIN32)
-
-if (BUILD_BROTLI)
- find_package(Brotli)
- if (Brotli_FOUND)
- message(STATUS "Brotli found")
- add_definitions(-DUSE_BROTLI)
- target_link_libraries(${PROJECT_NAME} PRIVATE Brotli_lib)
- endif (Brotli_FOUND)
-endif (BUILD_BROTLI)
-
-set(DROGON_SOURCES
- lib/src/AOPAdvice.cc
- lib/src/CacheFile.cc
- lib/src/ConfigLoader.cc
- lib/src/Cookie.cc
- lib/src/DrClassMap.cc
- lib/src/DrTemplateBase.cc
- lib/src/FiltersFunction.cc
- lib/src/HttpAppFrameworkImpl.cc
- lib/src/HttpBinder.cc
- lib/src/HttpClientImpl.cc
- lib/src/HttpControllersRouter.cc
- lib/src/HttpFileImpl.cc
- lib/src/HttpFileUploadRequest.cc
- lib/src/HttpRequestImpl.cc
- lib/src/HttpRequestParser.cc
- lib/src/HttpResponseImpl.cc
- lib/src/HttpResponseParser.cc
- lib/src/HttpServer.cc
- lib/src/HttpSimpleControllersRouter.cc
- lib/src/HttpUtils.cc
- lib/src/HttpViewData.cc
- lib/src/IntranetIpFilter.cc
- lib/src/ListenerManager.cc
- lib/src/LocalHostFilter.cc
- lib/src/MultiPart.cc
- lib/src/NotFound.cc
- lib/src/PluginsManager.cc
- lib/src/RangeParser.cc
- lib/src/SecureSSLRedirector.cc
- lib/src/GlobalFilters.cc
- lib/src/AccessLogger.cc
- lib/src/RealIpResolver.cc
- lib/src/SessionManager.cc
- lib/src/StaticFileRouter.cc
- lib/src/TaskTimeoutFlag.cc
- lib/src/Utilities.cc
- lib/src/WebSocketClientImpl.cc
- lib/src/WebSocketConnectionImpl.cc
- lib/src/WebsocketControllersRouter.cc
- lib/src/RateLimiter.cc
- lib/src/FixedWindowRateLimiter.cc
- lib/src/SlidingWindowRateLimiter.cc
- lib/src/TokenBucketRateLimiter.cc
- lib/src/Hodor.cc
- lib/src/SlashRemover.cc
- lib/src/drogon_test.cc
- lib/src/ConfigAdapterManager.cc
- lib/src/JsonConfigAdapter.cc
- lib/src/YamlConfigAdapter.cc)
-set(private_headers
- lib/src/AOPAdvice.h
- lib/src/CacheFile.h
- lib/src/ConfigLoader.h
- lib/src/filesystem.h
- lib/src/FiltersFunction.h
- lib/src/HttpAppFrameworkImpl.h
- lib/src/HttpClientImpl.h
- lib/src/HttpControllersRouter.h
- lib/src/HttpFileImpl.h
- lib/src/HttpFileUploadRequest.h
- lib/src/HttpMessageBody.h
- lib/src/HttpRequestImpl.h
- lib/src/HttpRequestParser.h
- lib/src/HttpResponseImpl.h
- lib/src/HttpResponseParser.h
- lib/src/HttpServer.h
- lib/src/HttpSimpleControllersRouter.h
- lib/src/HttpUtils.h
- lib/src/impl_forwards.h
- lib/src/ListenerManager.h
- lib/src/PluginsManager.h
- lib/src/SessionManager.h
- lib/src/SpinLock.h
- lib/src/StaticFileRouter.h
- lib/src/TaskTimeoutFlag.h
- lib/src/WebSocketClientImpl.h
- lib/src/WebSocketConnectionImpl.h
- lib/src/WebsocketControllersRouter.h
- lib/src/FixedWindowRateLimiter.h
- lib/src/SlidingWindowRateLimiter.h
- lib/src/TokenBucketRateLimiter.h
- lib/src/ConfigAdapterManager.h
- lib/src/JsonConfigAdapter.h
- lib/src/YamlConfigAdapter.h
- lib/src/ConfigAdapter.h)
-
-if (NOT WIN32)
- set(DROGON_SOURCES
- ${DROGON_SOURCES}
- lib/src/SharedLibManager.cc)
- set(private_headers
- ${private_headers}
- lib/src/SharedLibManager.h)
-else (NOT WIN32)
- set(DROGON_SOURCES
- ${DROGON_SOURCES}
- third_party/mman-win32/mman.c)
- set(private_headers
- ${private_headers}
- third_party/mman-win32/mman.h)
-endif (NOT WIN32)
-
-if (BUILD_POSTGRESQL)
- # find postgres
- find_package(pg)
- if (pg_FOUND)
- message(STATUS "libpq inc path:" ${PG_INCLUDE_DIRS})
- message(STATUS "libpq lib:" ${PG_LIBRARIES})
- target_link_libraries(${PROJECT_NAME} PRIVATE pg_lib)
- set(DROGON_SOURCES
- ${DROGON_SOURCES}
- orm_lib/src/postgresql_impl/PostgreSQLResultImpl.cc
- orm_lib/src/postgresql_impl/PgListener.cc)
- set(private_headers
- ${private_headers}
- orm_lib/src/postgresql_impl/PostgreSQLResultImpl.h
- orm_lib/src/postgresql_impl/PgListener.h)
- if (LIBPQ_BATCH_MODE)
- try_compile(libpq_supports_batch ${CMAKE_BINARY_DIR}/cmaketest
- ${PROJECT_SOURCE_DIR}/cmake/tests/test_libpq_batch_mode.cc
- LINK_LIBRARIES ${PostgreSQL_LIBRARIES}
- CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${PostgreSQL_INCLUDE_DIR}")
- endif (LIBPQ_BATCH_MODE)
- if (libpq_supports_batch)
- message(STATUS "The libpq supports batch mode")
- option(LIBPQ_SUPPORTS_BATCH_MODE "libpq batch mode" ON)
- set(DROGON_SOURCES
- ${DROGON_SOURCES}
- orm_lib/src/postgresql_impl/PgBatchConnection.cc)
- else (libpq_supports_batch)
- option(LIBPQ_SUPPORTS_BATCH_MODE "libpq batch mode" OFF)
- set(DROGON_SOURCES
- ${DROGON_SOURCES}
- orm_lib/src/postgresql_impl/PgConnection.cc)
- set(private_headers
- ${private_headers}
- orm_lib/src/postgresql_impl/PgConnection.h)
- endif (libpq_supports_batch)
- endif (pg_FOUND)
-endif (BUILD_POSTGRESQL)
-
-if (BUILD_MYSQL)
- # Find mysql, only mariadb client library is supported
- find_package(MySQL QUIET)
- find_package(unofficial-libmariadb QUIET)
- if (MySQL_FOUND)
- target_link_libraries(${PROJECT_NAME} PRIVATE MySQL_lib)
- set(DROGON_FOUND_MYSQL TRUE)
- set(MYSQL_LIB_NAME MySQL_lib)
- elseif (unofficial-libmariadb_FOUND)
- target_link_libraries(${PROJECT_NAME} PRIVATE unofficial::libmariadb)
- set(DROGON_FOUND_MYSQL TRUE)
- set(MYSQL_LIB_NAME unofficial::libmariadb)
- endif ()
-
- if (DROGON_FOUND_MYSQL)
- message(STATUS "Ok! We find mariadb!")
- include(CheckLibraryExists)
- check_library_exists(${MYSQL_LIB_NAME} mysql_optionsv "" HAS_MYSQL_OPTIONSV)
- if (HAS_MYSQL_OPTIONSV)
- message(STATUS "Mariadb support mysql_optionsv")
- add_definitions(-DHAS_MYSQL_OPTIONSV)
- endif(HAS_MYSQL_OPTIONSV)
-
- set(DROGON_SOURCES
- ${DROGON_SOURCES}
- orm_lib/src/mysql_impl/MysqlConnection.cc
- orm_lib/src/mysql_impl/MysqlResultImpl.cc)
- set(private_headers
- ${private_headers}
- orm_lib/src/mysql_impl/MysqlConnection.h
- orm_lib/src/mysql_impl/MysqlResultImpl.h)
- else (DROGON_FOUND_MYSQL)
- message(STATUS "MySql was not found.")
- endif (DROGON_FOUND_MYSQL)
-endif (BUILD_MYSQL)
-
-if (BUILD_SQLITE)
- # Find sqlite3.
- find_package(SQLite3 QUIET)
- find_package(unofficial-sqlite3 QUIET)
- if (SQLite3_FOUND)
- target_link_libraries(${PROJECT_NAME} PRIVATE SQLite3_lib)
- set(DROGON_FOUND_SQLite3 TRUE)
- elseif (unofficial-sqlite3_FOUND)
- target_link_libraries(${PROJECT_NAME} PRIVATE unofficial::sqlite3::sqlite3)
- set(DROGON_FOUND_SQLite3 TRUE)
- endif ()
-
- if (DROGON_FOUND_SQLite3)
- message(STATUS "Ok! We find sqlite3!")
- set(DROGON_SOURCES
- ${DROGON_SOURCES}
- orm_lib/src/sqlite3_impl/Sqlite3Connection.cc
- orm_lib/src/sqlite3_impl/Sqlite3ResultImpl.cc)
- set(private_headers
- ${private_headers}
- orm_lib/src/sqlite3_impl/Sqlite3Connection.h
- orm_lib/src/sqlite3_impl/Sqlite3ResultImpl.h)
- else (DROGON_FOUND_SQLite3)
- message(STATUS "sqlite3 was not found.")
- endif (DROGON_FOUND_SQLite3)
-endif (BUILD_SQLITE)
-
-if (BUILD_REDIS)
- find_package(Hiredis)
- if (Hiredis_FOUND)
- add_definitions(-DUSE_REDIS)
- target_link_libraries(${PROJECT_NAME} PRIVATE Hiredis_lib)
- set(DROGON_SOURCES
- ${DROGON_SOURCES}
- nosql_lib/redis/src/RedisClientImpl.cc
- nosql_lib/redis/src/RedisClientLockFree.cc
- nosql_lib/redis/src/RedisClientManager.cc
- nosql_lib/redis/src/RedisConnection.cc
- nosql_lib/redis/src/RedisResult.cc
- nosql_lib/redis/src/RedisTransactionImpl.cc
- nosql_lib/redis/src/SubscribeContext.cc
- nosql_lib/redis/src/RedisSubscriberImpl.cc)
- set(private_headers
- ${private_headers}
- nosql_lib/redis/src/RedisClientImpl.h
- nosql_lib/redis/src/RedisClientLockFree.h
- nosql_lib/redis/src/RedisConnection.h
- nosql_lib/redis/src/RedisTransactionImpl.h
- nosql_lib/redis/src/SubscribeContext.h
- nosql_lib/redis/src/RedisSubscriberImpl.h)
-
- endif (Hiredis_FOUND)
-endif (BUILD_REDIS)
-
-if (NOT Hiredis_FOUND)
- set(DROGON_SOURCES
- ${DROGON_SOURCES}
- lib/src/RedisClientSkipped.cc
- lib/src/RedisResultSkipped.cc
- lib/src/RedisClientManagerSkipped.cc)
- set(private_headers
- ${private_headers}
- lib/src/RedisClientManager.h)
-endif (NOT Hiredis_FOUND)
-
-if (BUILD_TESTING)
- add_subdirectory(nosql_lib/redis/tests)
-endif (BUILD_TESTING)
-
-find_package(ZLIB REQUIRED)
-target_link_libraries(${PROJECT_NAME} PRIVATE ZLIB::ZLIB)
-
-execute_process(COMMAND "git" rev-parse HEAD
- WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
- OUTPUT_VARIABLE GIT_SHA1
- ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
-configure_file("${PROJECT_SOURCE_DIR}/cmake/templates/version.h.in"
- "${PROJECT_SOURCE_DIR}/lib/inc/drogon/version.h" @ONLY)
-
-if (DROGON_CXX_STANDARD EQUAL 20)
- option(USE_COROUTINE "Enable C++20 coroutine support" ON)
-else (DROGON_CXX_STANDARD EQUAL 20)
- option(USE_COROUTINE "Enable C++20 coroutine support" OFF)
-endif (DROGON_CXX_STANDARD EQUAL 20)
-
-if (BUILD_EXAMPLES)
- add_subdirectory(examples)
-endif (BUILD_EXAMPLES)
-
-if (BUILD_CTL)
- add_subdirectory(drogon_ctl)
-endif (BUILD_CTL)
-
-if (COZ_PROFILING)
- find_package(coz-profiler REQUIRED)
- target_compile_definitions(${PROJECT_NAME} PRIVATE -DCOZ_PROFILING=1)
- # If linked will not need to be ran with `coz run --- [executable]` to run the
- # profiler, but drogon_ctl currently won't build because it doesn't find debug
- # information while trying to generate it's own sources
- # target_link_libraries(${PROJECT_NAME} PUBLIC coz::coz)
- target_include_directories(${PROJECT_NAME} PUBLIC ${COZ_INCLUDE_DIRS})
-endif (COZ_PROFILING)
-
-set(DROGON_SOURCES
- ${DROGON_SOURCES}
- orm_lib/src/ArrayParser.cc
- orm_lib/src/Criteria.cc
- orm_lib/src/DbClient.cc
- orm_lib/src/DbClientImpl.cc
- orm_lib/src/DbClientLockFree.cc
- orm_lib/src/DbConnection.cc
- orm_lib/src/DbListener.cc
- orm_lib/src/Exception.cc
- orm_lib/src/Field.cc
- orm_lib/src/Result.cc
- orm_lib/src/Row.cc
- orm_lib/src/SqlBinder.cc
- orm_lib/src/TransactionImpl.cc
- orm_lib/src/RestfulController.cc)
-set(DROGON_HEADERS
- lib/inc/drogon/Attribute.h
- lib/inc/drogon/CacheMap.h
- lib/inc/drogon/Cookie.h
- lib/inc/drogon/DrClassMap.h
- lib/inc/drogon/DrObject.h
- lib/inc/drogon/DrTemplate.h
- lib/inc/drogon/DrTemplateBase.h
- lib/inc/drogon/HttpAppFramework.h
- lib/inc/drogon/HttpBinder.h
- lib/inc/drogon/HttpClient.h
- lib/inc/drogon/HttpController.h
- lib/inc/drogon/HttpFilter.h
- lib/inc/drogon/HttpRequest.h
- lib/inc/drogon/HttpResponse.h
- lib/inc/drogon/HttpSimpleController.h
- lib/inc/drogon/HttpTypes.h
- lib/inc/drogon/HttpViewData.h
- lib/inc/drogon/IntranetIpFilter.h
- lib/inc/drogon/IOThreadStorage.h
- lib/inc/drogon/LocalHostFilter.h
- lib/inc/drogon/MultiPart.h
- lib/inc/drogon/NotFound.h
- lib/inc/drogon/Session.h
- lib/inc/drogon/UploadFile.h
- lib/inc/drogon/WebSocketClient.h
- lib/inc/drogon/WebSocketConnection.h
- lib/inc/drogon/WebSocketController.h
- lib/inc/drogon/drogon.h
- lib/inc/drogon/version.h
- lib/inc/drogon/drogon_callbacks.h
- lib/inc/drogon/PubSubService.h
- lib/inc/drogon/drogon_test.h
- lib/inc/drogon/RateLimiter.h
- ${CMAKE_CURRENT_BINARY_DIR}/exports/drogon/exports.h)
-set(private_headers
- ${private_headers}
- lib/src/DbClientManager.h
- orm_lib/src/DbClientImpl.h
- orm_lib/src/DbConnection.h
- orm_lib/src/ResultImpl.h
- orm_lib/src/TransactionImpl.h)
-if (pg_FOUND OR DROGON_FOUND_MYSQL OR DROGON_FOUND_SQLite3)
- set(DROGON_SOURCES
- ${DROGON_SOURCES}
- orm_lib/src/DbClientManager.cc)
-else (pg_FOUND OR DROGON_FOUND_MYSQL OR DROGON_FOUND_SQLite3)
- set(DROGON_SOURCES
- ${DROGON_SOURCES}
- lib/src/DbClientManagerSkipped.cc)
-endif (pg_FOUND OR DROGON_FOUND_MYSQL OR DROGON_FOUND_SQLite3)
-
-set_target_properties(${PROJECT_NAME}
- PROPERTIES CXX_STANDARD ${DROGON_CXX_STANDARD})
-set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD_REQUIRED ON)
-set_target_properties(${PROJECT_NAME} PROPERTIES CXX_EXTENSIONS OFF)
-set_target_properties(${PROJECT_NAME} PROPERTIES EXPORT_NAME Drogon)
-
-if (pg_FOUND OR DROGON_FOUND_MYSQL OR DROGON_FOUND_SQLite3)
- if (pg_FOUND)
- option(USE_POSTGRESQL "Enable PostgreSQL" ON)
- else (pg_FOUND)
- option(USE_POSTGRESQL "Disable PostgreSQL" OFF)
- endif (pg_FOUND)
-
- if (DROGON_FOUND_MYSQL)
- option(USE_MYSQL "Enable Mysql" ON)
- else (DROGON_FOUND_MYSQL)
- option(USE_MYSQL "Disable Mysql" OFF)
- endif (DROGON_FOUND_MYSQL)
-
- if (DROGON_FOUND_SQLite3)
- option(USE_SQLITE3 "Enable Sqlite3" ON)
- else (DROGON_FOUND_SQLite3)
- option(USE_SQLITE3 "Disable Sqlite3" OFF)
- endif (DROGON_FOUND_SQLite3)
-endif (pg_FOUND OR DROGON_FOUND_MYSQL OR DROGON_FOUND_SQLite3)
-
-get_filename_component(COMPILER_COMMAND ${CMAKE_CXX_COMPILER} NAME)
-set(COMPILER_ID ${CMAKE_CXX_COMPILER_ID})
-
-if (CMAKE_BUILD_TYPE)
- string(TOLOWER ${CMAKE_BUILD_TYPE} _type)
- if (_type STREQUAL release)
- set(COMPILATION_FLAGS "${CMAKE_CXX_FLAGS_RELEASE} -std=c++")
- elseif (_type STREQUAL debug)
- set(COMPILATION_FLAGS "${CMAKE_CXX_FLAGS_DEBUG} -std=c++")
- else ()
- set(COMPILATION_FLAGS "-std=c++")
- endif ()
-else (CMAKE_BUILD_TYPE)
- set(COMPILATION_FLAGS "-std=c++")
-endif (CMAKE_BUILD_TYPE)
-
-list(APPEND INCLUDE_DIRS_FOR_DYNAMIC_VIEW
- "${CMAKE_INSTALL_PREFIX}/${INSTALL_INCLUDE_DIR}")
-list(REMOVE_DUPLICATES INCLUDE_DIRS_FOR_DYNAMIC_VIEW)
-set(INS_STRING "")
-foreach (loop_var ${INCLUDE_DIRS_FOR_DYNAMIC_VIEW})
- set(INS_STRING "${INS_STRING} -I${loop_var}")
-endforeach (loop_var)
-
-set(INCLUDING_DIRS ${INS_STRING})
-
-configure_file(${PROJECT_SOURCE_DIR}/cmake/templates/config.h.in
- ${PROJECT_BINARY_DIR}/drogon/config.h @ONLY)
-
-if (BUILD_TESTING)
- message(STATUS "Building tests")
- enable_testing()
- add_subdirectory(lib/tests)
- if (pg_FOUND)
- add_subdirectory(${PROJECT_SOURCE_DIR}/orm_lib/src/postgresql_impl/test)
- endif (pg_FOUND)
- if (DROGON_FOUND_MYSQL)
- add_subdirectory(${PROJECT_SOURCE_DIR}/orm_lib/src/mysql_impl/test)
- endif (DROGON_FOUND_MYSQL)
- if (DROGON_FOUND_SQLite3)
- add_subdirectory(${PROJECT_SOURCE_DIR}/orm_lib/src/sqlite3_impl/test)
- endif (DROGON_FOUND_SQLite3)
- add_subdirectory(${PROJECT_SOURCE_DIR}/orm_lib/tests)
-endif (BUILD_TESTING)
-
-# Installation
-
-install(TARGETS ${PROJECT_NAME}
- EXPORT DrogonTargets
- RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
- ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" COMPONENT lib
- LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT lib)
-
-install(FILES ${DROGON_HEADERS} DESTINATION ${INSTALL_INCLUDE_DIR}/drogon)
-
-set(ORM_HEADERS
- orm_lib/inc/drogon/orm/ArrayParser.h
- orm_lib/inc/drogon/orm/BaseBuilder.h
- orm_lib/inc/drogon/orm/Criteria.h
- orm_lib/inc/drogon/orm/DbClient.h
- orm_lib/inc/drogon/orm/DbListener.h
- orm_lib/inc/drogon/orm/DbTypes.h
- orm_lib/inc/drogon/orm/Exception.h
- orm_lib/inc/drogon/orm/Field.h
- orm_lib/inc/drogon/orm/FunctionTraits.h
- orm_lib/inc/drogon/orm/Mapper.h
- orm_lib/inc/drogon/orm/CoroMapper.h
- orm_lib/inc/drogon/orm/Result.h
- orm_lib/inc/drogon/orm/ResultIterator.h
- orm_lib/inc/drogon/orm/Row.h
- orm_lib/inc/drogon/orm/RowIterator.h
- orm_lib/inc/drogon/orm/SqlBinder.h
- orm_lib/inc/drogon/orm/RestfulController.h)
-install(FILES ${ORM_HEADERS} DESTINATION ${INSTALL_INCLUDE_DIR}/drogon/orm)
-
-set(NOSQL_HEADERS
- nosql_lib/redis/inc/drogon/nosql/RedisClient.h
- nosql_lib/redis/inc/drogon/nosql/RedisResult.h
- nosql_lib/redis/inc/drogon/nosql/RedisSubscriber.h
- nosql_lib/redis/inc/drogon/nosql/RedisException.h)
-install(FILES ${NOSQL_HEADERS} DESTINATION ${INSTALL_INCLUDE_DIR}/drogon/nosql)
-
-set(DROGON_UTIL_HEADERS
- lib/inc/drogon/utils/any.h
- lib/inc/drogon/utils/apply.h
- lib/inc/drogon/utils/coroutine.h
- lib/inc/drogon/utils/FunctionTraits.h
- lib/inc/drogon/utils/HttpConstraint.h
- lib/inc/drogon/utils/optional.h
- lib/inc/drogon/utils/OStringStream.h
- lib/inc/drogon/utils/string_view.h
- lib/inc/drogon/utils/Utilities.h)
-install(FILES ${DROGON_UTIL_HEADERS}
- DESTINATION ${INSTALL_INCLUDE_DIR}/drogon/utils)
-
-set(DROGON_PLUGIN_HEADERS
- lib/inc/drogon/plugins/Plugin.h
- lib/inc/drogon/plugins/SecureSSLRedirector.h
- lib/inc/drogon/plugins/AccessLogger.h
- lib/inc/drogon/plugins/RealIpResolver.h
- lib/inc/drogon/plugins/Hodor.h
- lib/inc/drogon/plugins/SlashRemover.h
- lib/inc/drogon/plugins/GlobalFilters.h)
-
-install(FILES ${DROGON_PLUGIN_HEADERS}
- DESTINATION ${INSTALL_INCLUDE_DIR}/drogon/plugins)
-
-target_sources(${PROJECT_NAME} PRIVATE
- ${DROGON_SOURCES}
- ${private_headers}
- ${DROGON_HEADERS}
- ${ORM_HEADERS}
- ${DROGON_UTIL_HEADERS}
- ${DROGON_PLUGIN_HEADERS}
- ${NOSQL_HEADERS})
-
-source_group("Public API"
- FILES
- ${DROGON_HEADERS}
- ${ORM_HEADERS}
- ${DROGON_UTIL_HEADERS}
- ${DROGON_PLUGIN_HEADERS}
- ${NOSQL_HEADERS})
-source_group("Private Headers"
- FILES
- ${private_headers})
-
-# Export the package for use from the build-tree (this registers the build-tree
-# with a global cmake-registry) export(PACKAGE Drogon)
-
-include(CMakePackageConfigHelpers)
-# ... for the install tree
-configure_package_config_file(
- cmake/templates/DrogonConfig.cmake.in
- ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/DrogonConfig.cmake
- INSTALL_DESTINATION
- ${INSTALL_DROGON_CMAKE_DIR})
-
-# version
-write_basic_package_version_file(
- ${CMAKE_CURRENT_BINARY_DIR}/DrogonConfigVersion.cmake
- VERSION ${DROGON_VERSION}
- COMPATIBILITY SameMajorVersion)
-
-# Install the DrogonConfig.cmake and DrogonConfigVersion.cmake
-install(FILES
- "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/DrogonConfig.cmake"
- "${CMAKE_CURRENT_BINARY_DIR}/DrogonConfigVersion.cmake"
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/FindUUID.cmake"
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/FindJsoncpp.cmake"
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/FindSQLite3.cmake"
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/FindMySQL.cmake"
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/Findpg.cmake"
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/FindBrotli.cmake"
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/Findcoz-profiler.cmake"
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/FindHiredis.cmake"
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/FindFilesystem.cmake"
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake/DrogonUtilities.cmake"
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake/ParseAndAddDrogonTests.cmake"
- DESTINATION "${INSTALL_DROGON_CMAKE_DIR}"
- COMPONENT dev)
-
-# Install the export set for use with the install-tree
-install(EXPORT DrogonTargets
- DESTINATION "${INSTALL_DROGON_CMAKE_DIR}"
- NAMESPACE Drogon::
- COMPONENT dev)
-
-# Doxygen documentation
-find_package(Doxygen OPTIONAL_COMPONENTS dot dia)
-if(DOXYGEN_FOUND)
- set(DOXYGEN_PROJECT_BRIEF "C++14/17-based HTTP application framework")
- set(DOXYGEN_OUTPUT_DIRECTORY docs/${PROJECT_NAME})
- set(DOXYGEN_GENERATE_LATEX NO)
- set(DOXYGEN_BUILTIN_STL_SUPPORT YES)
- set(DOXYGEN_USE_MDFILE_AS_MAINPAGE README.md)
- set(DOXYGEN_STRIP_FROM_INC_PATH ${PROJECT_SOURCE_DIR}/lib/inc
- ${PROJECT_SOURCE_DIR}/orm_lib/inc
- ${CMAKE_CURRENT_BINARY_DIR}/exports)
- set(DOXYGEN_EXAMPLE_PATTERNS *)
- if(WIN32)
- set(DOXYGEN_PREDEFINED _WIN32)
- endif(WIN32)
- doxygen_add_docs(doc_${PROJECT_NAME}
- README.md
- README.zh-CN.md
- README.zh-TW.md
- ChangeLog.md
- CONTRIBUTING.md
- ${DROGON_HEADERS}
- ${DROGON_UTIL_HEADERS}
- ${DROGON_PLUGIN_HEADERS}
- ${ORM_HEADERS}
- COMMENT "Generate documentation")
- if(NOT TARGET doc)
- add_custom_target(doc)
- endif()
- add_dependencies(doc doc_${PROJECT_NAME})
- if (BUILD_DOC)
- add_dependencies(${PROJECT_NAME} doc_${PROJECT_NAME})
- # Don't install twice, so limit to Debug (assume developer)
- install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/docs/${PROJECT_NAME}
- TYPE DOC
- CONFIGURATIONS Debug)
- endif(BUILD_DOC)
-endif(DOXYGEN_FOUND)
-
-include(cmake/Packages.cmake)
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/CONTRIBUTING.md b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/CONTRIBUTING.md
deleted file mode 100644
index 65813255ffed..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/CONTRIBUTING.md
+++ /dev/null
@@ -1,78 +0,0 @@
-# Contributing
-
-**Drogon** is an open source project at its heart and every contribution is
-welcome. By participating in this project you agree to stick to common sense and
-contribute in an overall positive way.
-
-## Getting Started
-
-1. Fork, then clone the repository: `git clone
- git@github.com:your-username/drogon.git`
-1. Follow the [official installation steps on
- Github](https://drogonframework.github.io/drogon-docs/#/ENG-02-Installation). It’s best to
- make sure to have the `drogon_ctl` executable in your shell’s `PATH`
- environment variable in case you use a terminal.
-
-Now you can create branches, start adding features & bugfixes to the code, and
-[create pull requests](https://github.com/an-tao/drogon/compare).
-
-## Pull Requests
-
-Feel free to [create a pull request](https://github.com/an-tao/drogon/compare)
-if you think you can contribute to the project. You will be listed as a
-[contributor](https://github.com/an-tao/drogon/graphs/contributors), agree to
-this document, and the
-[LICENSE](https://github.com/an-tao/drogon/blob/master/LICENSE).
-
-There are also some recommendations you can follow. These aren’t requirements,
-but they will make the development more straightforward:
-
-1. If you are unsure about a specific change, have questions, or want to get
- feedback about a feature you want to introduce, [open a new
- issue](https://github.com/an-tao/drogon/issues) (please make sure that there
- is no previous issue about a similar topic).
-1. You should branch off the current state of the `master` branch, and also
- merge it into your local branch before creating a pull request if there were
- other changes introduced in the meantime.
-1. You can use the following branch names to make your intent clearer:
- * `bugfix/123-fix-template-parser` when you want to fix a bug in the
- template parser.
- * `feature/123-add-l10n-and-i18n` if you want to add localization (l10n) and
- internationalization (i18n) as a new feature to the project.
- * If there’s no open issue and no need to open one you can skip the number,
- and just use the descriptive part: `bugfix/fix-typo-in-docs`.
-1. Write a brief, but good, and descriptive commit message / pull request title in English,
- e. g. “Added Internationalization and Localization”.
-
-If you follow these recommendations your pull request will have more success:
-
-1. Keep the style consistent to the project, when in doubt refer to the [Google
- C++ Style Guide](https://google.github.io/styleguide/cppguide.html#C++_Version).
-1. Please write all comments in English. Comments for new public API introduced by
- your pull request must be added and written in [Doxygen](http://www.doxygen.nl/) format.
-1. Format the code with `clang-format` (>= 8.0.0). The configuration is already
- provided in the `.clang-format` file, just run the `./format.sh` script
- before submitting your pull request.
-1. Install [Google Test](https://github.com/google/googletest), and write a test
- case.
- 1. In case it is a bugfix, it’s best to write a test that breaks in the old
- version, but works in the new one. This way regressions can be tracked
- over time.
- 1. If you add a feature, it is best to write the test as if it would be an
- example how to use the newly introduced feature and to test all major,
- newly introduced code.
-
-## Project Maintainers & Collaborators
-
-In addition to the guidelines mentioned above, collaborators with write access
-to the repository should also follow these guidelines:
-
-1. If there are new tests as part of the pull request, you should make sure that
- they succeed.
-1. When merging **Pull Requests** you should use the option *Squash & Merge* and
- chose a descriptive commit message for the bugfix / feature (if not already
- done by the individual contributor).
-
- This way the history in the `master` branch will be free of small
- corrections and easier to follow for people who aren’t engaged in the
- project on a day-to-day basis.
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/ChangeLog.md b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/ChangeLog.md
deleted file mode 100644
index 366860e732af..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/ChangeLog.md
+++ /dev/null
@@ -1,1517 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file.
-
-## [Unreleased]
-
-## [1.8.7] - 2023-09-24
-
-### Fixed
-
-- Fix compatibility issue with c++14.
-
-## [1.8.6] - 2023-08-23
-
-### Changed
-
-- Show outputs of try_compile for UUID libs.
-
-- Update Trantor to fix a serious bug when sending files.
-
-## [1.8.5] - 2023-08-19
-
-### API changes list
-
-- Add the forwardCoro method to HttpAppFramework.
-
-- Possibility to add plugins without config file.
-
-- Implement QueryBuilder.
-
-- Add getOriginalPath function.
-
-- Add setsockopt to HttpClient.
-
-- Add overload function of newHttpResponse.
-
-- Add getConnectionCount method.
-
-### Changed
-
-- Add synchronization interface to model's associated query.
-
-- Use syncAdvices.empty() to check.
-
-- Remove the deprecated Json::Reader.
-
-- Adapt Drogon to take advitange of Trantor TLS refactor.
-
-- Add avatars of all contributors to the readme file.
-
-- Remove docsforge from readme.
-
-- Adapt to gcc13.
-
-- Modify the HttpMessageBody class.
-
-- Add the GlobalFilters plugin.
-
-- Add filters and plugins to the drogon.h header file.
-
-- Add webp and svg to the default file_types.
-
-- Update SqlBinder.h.
-
-- Remove path from COMPILER_COMMAND.
-
-- Hodor plugin - Use IP bytes for user IP identification.
-
-- Add SlashRemover plugin.
-
-- Support setting max_files in loggers.
-
-- Use shared_ptr to store plugins.
-
-- Throw custom exception in HttpClient.
-
-- Base64 improvements.
-
-- Add CT_TEXT_JAVASCRIPT.
-
-- Fix typo in newHttpJsonResponse documentation.
-
-- Add CodeQL workflow.
-
-- constexpr base64 length calculators.
-
-- Make isBase64() and isInteger() take string_view.
-
-- Chore: add package.xml.
-
-- Add an example of yaml config file.
-
-- Remove some unused functions.
-
-- Use unsigned char to call the std::isspace function.
-
-- Change options BUILD_CTL and BUILD_EXAMPLES and update readme with Building options.
-
-- Remove unused CI files and Jekyll config.
-
-- Ensure that all filters, AOP advices, and handlers are executed within the IO threads.
-
-- Update test.sh and build.sh by appending prefix "X" to string variable comparisons.
-
-- Recognize URI in request lines.
-
-- Address warnings on macOS CI.
-
-- Perform insensitive string compare of cookie SameSite attribute.
-
-### Fixed
-
-- Temporary fix dead HttpClient.
-
-- Fix a configuration error when building drogon_ctl.
-
-- Fix generation of JSON field validation for short type.
-
-- Fix bug on Mac M1 with redis chat example code.
-
-- Fix error: conversion from ‘long int’ to ‘Json::Value’ is ambiguous.
-
-- Bugfix: PgBatchConnection did not report error message.
-
-- Fix typo in config file.
-
-- Fix a hanging bug when writing large string to text field.
-
-- Fixed logic error of limiterExpireTime_.
-
-- Fix Missing Header BaseBuilder.h in CMakeLists.
-
-- Fix: Coroutine handle should be captured by value.
-
-- Fix issues in the ListParaView and content types.
-
-- Fix target link libraries of yaml-cpp to comaptiable with vcpkg.
-
-- Fix build error on win32/mingw.
-
-- Fix CI in MacOS.
-
-- Fix broken link in CONTRIBUTING.md.
-
-
-## [1.8.4] - 2023-03-19
-
-### API Changes list
-
-- Add a configuration option to display local time in logs.
-
-- Add the stackLimit option for jsoncpp.
-
-- Add coroutine to wait until event loop ends.
-
-- Add switchThreadCoro().
-
-- Add queueInLoopCoro function.
-
-### Changed
-
-- Reduce overhead of constructing string from request status.
-
-- Add coroutine parameter binding test and make tests not blocking.
-
-- Use weakptr instead of shared_ptr in HttpClient.
-
-- Refactor HttpServer codes.
-
-- Add an option in CMakeLists.txt to set how to use trantor.
-
-- Add support to yaml config file.
-
-- Changes to free http client if no request is pending.
-
-- Trigger error message in drogon test when faced with bad parameter.
-
-### Fixed
-
-- Make the token bucket full when it is initialized
-
-- Fix file r/w race condition in integration test.
-
-- Postgresql: don't handle events anymore after connection closing.
-
-- Fix multipart boundary with charset.
-
-- Fix a conan issue in github actions.
-
-- Hold shared pointer from the very beginning in WebSocketConnectionImpl.
-
-## [1.8.3] - 2023-01-23
-
-### API changes list
-
-- Add onSessionStart() and onSessionDestroy() events
-
-- Support postgresql asynchronous notification (LISTEN/NOTIFY).
-
-### Changed
-
-- Update Utilities.cc
-
-- Drogon test refactor
-
-- Enable json entry as string
-
-- Mark awaiters as non-copyable
-
-### Fixed
-
-- Fix HttpController regex path matching
-
-- Fix a memory leak in the redis example
-
-- Partial fix for MSYS2 compat
-
-## [1.8.2] - 2022-11-11
-
-### API changes list
-
-- Add the queueInLoopCoro function.
-
-- Avoid HashDoS attacks via random per-session hash initial state.
-
-### Changed
-
-- Support the mediumint column when generate the mysql model.
-
-- Set Hiredis_FOUND to true when finding Hiredis library.
-
-- Add rate limiter.
-
-- Add some test cases for the sqlite datetime type.
-
-### Fixed
-
-- Fix typo in drogon_test.h.
-
-- Fix a date race in drogon_test.
-
-- Fix a deadlock bug when closing all database connections.
-
-## [1.8.1] - 2022-09-25
-
-### API changes list
-
-- Support redis subscription.
-
-### Changed
-
-- Remove redundant member functions of drogon::Task.
-
-- Small patches on orm_lib.
-
-- Add support for the string_view type to SqlBinder in orm.
-
-### Fixed
-
-- Fix a conflict of ssize_t type with hiredis.
-
-- Fix a test bug when clients start before servers.
-
-- Fix model template file Unreachable code.
-
-- Use the mysql_library_end() function to avoid memory leaks.
-
-## [1.8.0] - 2022-09-01
-
-### API changes list
-
-- Add ‘not like‘ criteria.
-
-- Add HttpResponse::newStreamResponse().
-
-- Add the same site option for session cookie.
-
-- Add support for custom SQL query.
-
-### Changed
-
-- Update issue templates.
-
-- Enable automatic reconnect in mysql.
-
-- Add typename for clang-14.
-
-- A workaround for redis sync exec.
-
-- Resolve redis server hostname from config file.
-
-- Add username option to redis databases.
-
-- Return nullptr if a plugin is not loaded when getting it.
-
-- Support controller registration in plugin.
-
-- Check mysql-optionsv support in cmake.
-
-- Check if host header is set before setting.
-
-- Clear all database connections before quitting.
-
-- Add namespace to views when using drogon_ctl.
-
-- Support pipeline mode on PostgreSQL 14+.
-
-- Add content type to multipart file upload.
-
-- Make orm::Result compatible with C++ STL container concepts.
-
-- Throw exceptions instead of exiting when loading configuration fails.
-
-- Rename BUILD_TRANTOR_SHARED to BUILD_SHARED_LIBS.
-
-- Support compressed request.
-
-- Prevent sending multiple responses for a single request.
-
-- Remove the virtual specifier from functions marked with override.
-
-- Remove redundancies from the CMake action.
-
-- Ensure requiring a semi-colon after macros.
-
-- Omit redundant virtual specifiers.
-
-- Refactor orm::SqlBinder.
-
-- Implement toJson to convert std::vector to Json::Value.
-
-- Resolve real ip from HttpRequest.
-
-- Delete the unmaintained test script.
-
-- Change the listener port of the cookie test.
-
-- Use a raw string literal for the drogon banner.
-
-- Change timeout of pipeline test for the CI environment.
-
-- Accept "postgres" for DbClient type as well.
-
-- Log remote real address in AccessLogger.
-
-- Support coroutine filter.
-
-- Refactor db_test.cc.
-
-- Use nullopt instead of the no-argument constructor.
-
-- Set the running flag to false after calling the quit() method.
-
-- Fix doc link in README files.
-
-### Fixed
-
-- Fix XXXControllers created on MSVC even if specified not to do so.
-
-- To avoid accessing a null point, make sure `result == OK` before accessing the response ptr.
-
-- Fix a bug when stopping redis service.
-
-- Fix mutex lock missing.
-
-- Fix tolower with cfi sanitizer.
-
-- Add move constructor to fix clang-14 compile error.
-
-- Fix HttpClient dns cache.
-
-- Fix bug when resolving redis server hostname.
-
-- Reset timer afters relaunching on Linux.
-
-- Fix some configuration file issues.
-
-- Fix HttpFile unittest error on Windows.
-
-- Fix core dump causing by logging in destructor.
-
-- Fixing link error when linking with static c-ares.
-
-- Remove redundant resource release.
-
-- Install missing header file apply.h.
-
-- Fix deleteFutureByPrimaryKey compile fail.
-
-- Fix compilation failure without database support.
-
-- Fix Mapper::updateBy() async api.
-
-- Fix no BUILD_CTL with tests.
-
-- Fix some bugs in RedisClient.
-
-- Fix a misuse of std::move.
-
-- Fix a bug when creating models with composite keys in sqlite3.
-
-- Fix a bug when converting the content-length string to size_t.
-
-- Fix a bug when parsing multipart/form-data.
-
-- Export the getVersion method for Windows.
-
-- Add a pre-compilation macro in the pg pipeline test code.
-
-
-## [1.7.5] - 2022-02-19
-
-### API changes list
-
-- Add toString for drogon::ReqResult.
-
-- Add max-age, samesite options to Cookie.
-
-- Enable setup output of logs to files at any time.
-
-### Changed
-
-- Use operator<< to convert ReqResult to string.
-
-- Remove sudo from build.sh.
-
-- Remove sudo from dependencies in Dockerfile.
-
-- Avoid attempt linking to std::fs when target does not exist.
-
-- Destroy fastdb client on quit.
-
-- Check HTTP client is not sending requests in sync mode on the same event loop.
-
-- Start listening after beginning advices.
-
-- Allow using json_cpp in other sublibraries.
-
-- Accept system lib for uuid on macOS.
-
-- Add `Not In` to ORM Criteria.
-
-### Fixed
-
-- Fix WS test potentially can get stuck.
-
-- Fix a bug in model generation.
-
-- Prevent malformed upload path causing arbitrary write.
-
-- Fix missing "using namespace drogon::orm;" at autogenerated restful controllers.
-
-## [1.7.4] - 2021-12-11
-
-### API Change List
-
-- Support setting client certificate and SSL options on HTTP client
-
-- Add more method for mapper
-
-- Add overloads for SqlBinder::operator<< with non-const ref parameter
-
-### Changes
-
-- Use decay_t instead of remove_cvref_t
-
-- Prevent `drogon_ctl create_view` appending empty new lines to resulting
-
-- Add an example for using coroutines of redis clients
-
-- Export some symbols for Windows
-
-- Mark all awaiters as nodiscard
-
-- Handle SIGINT too
-
-- Support CoroMapper method chaining
-
-- Remove setting c++17 in FindFilesystem
-
-### Fixed
-
-- Fix Drogon not building caused by FindFilesystem
-
-- Fix deprecated warning when using openssl 3
-
-- Fix coroutine object destructing before coroutine ends in async_run
-
-- Fix build fail on CentOS8
-
-- Fix some compiler warnings
-
-- Fix the error with multiple results when calling a procedure in mysql
-
-- Fix an error when binding a function pointer to SqlBinder
-
-- Fix orm tests
-
-- Fix CI to actually build in C++14
-
-- Fix a race condition when resetting ws
-
-- Fix an error of std::bad_function_call
-
-- Update Trantor (fix sending partial files)
-
-## [1.7.3] - 2021-10-17
-
-### API Change List
-
-- Support sending files by range
-
-- Allow outside access to the file path of an HTTP response
-
-- Support custom MIME types and extensions
-
-- Add the getOptionalParameter method
-
-- Add async_run
-
-### Changes
-
-- Experimental HaikuOS Support
-
-- Improve AccessLogger
-
-- Add Alpine Dockerfile
-
-- Add option to disable brotli if desired by the builder
-
-### Fixed
-
-- Fix a bug in the getIOLoop method
-
-- Return on redis connection errors
-
-- Fix(MutliPart): Does not respect quotes in Content-Disposition header
-
-- Fix(cmake): error in FindFilesystem
-
-- Fix(style): Change the NotFound page text color
-
-- Fix a race condition in testing
-
-## [1.7.2] - 2021-08-24
-
-### API Change List
-
-- Add port() and host() to HttpClient
-
-- Add stop() method to the WebSocketClient class
-
-### Changes
-
-- Enables higher level of warnings when building on UNIX with GCC
-
-- Generic optimizations
-
-- Add redis example
-
-- Added support for paths containing unicode characters on Windows
-
-- Load ParseAndAddDrogonTests in DrogonConfig
-
-- Add BUILD_DOC to cmake options
-
-- Add websocket server example
-
-- CMake: Add CPack for .deb and .rpm package generation
-
-- cmake: Use GNUInstallDirs to figure out install dirs.
-
-### Fixed
-
-- Fix WS client example not working with integration_test
-
-- Fix WS client example error when encountering bad IP addresses
-
-- CacheFile supports >2GB files on 64-bit Windows
-
-- `drogon_ctl` now emits error on failing to create view from CSP
-
-- Added the `make` program to Ubuntu docker environment
-
-- Correctly check the case-insensitive value of the upgrade header of responses in websocket connections
-
-- Fix incorrect MD5 hash when using internal MD5 implementation when input size == block size+1
-
-- Fix test success message incorrectly shown for a failed test when -s is flag present
-
-- Force using boost::filesystem when building for Android
-
-- Escape connection string in drogon_ctl create model
-
-- Fix some memory leak and race conditions in WebSocketClient
-
-## [1.7.1] - 2021-06-24
-
-### Changes
-
-- Updated Dockerfile to Ubuntu 20.04 & Fixed Timezone Hangup.
-
-- Add jsonstore example.
-
-- Fix some typos.
-
-### Fixed
-
-- Fix single layer directory traversal in StaticFileRouter.
-
-## [1.7.0] - 2021-06-18
-
-### API changes list
-
-- Add the PreSendingAdvice to AOP.
-
-- Make Json::Value as a SQL parameters type.
-
-- Add the int type for the Row index parameter.
-
-- Add SSL_CONF_cmd support.
-
-- Add the setCustomStatusCode method.
-
-### Changes
-
-- Fix sync_wait/co_future use-after-free.
-
-- Add the AccessLogger plugin.
-
-- Make AsyncTask only destruct when the coroutine reaches end of executions.
-
-- Add Drogon test framework.
-
-- Improve WebSocket mask handling.
-
-- Add minimal server side examples.
-
-- Optimize HttpControllersRouter for cases where regex is not needed.
-
-- Create controller instances after running instead of after being called.
-
-### Fixed
-
-- Move resolverPtr when destroying an HttpClientImpl object.
-
-- Modify the way to create sqlite3 client.
-
-- Fix a bug when a network failure occurs on Redis connections.
-
-- Fix a bug of string_view for MSVC.
-
-- Fix 'build.sh -tshared'.
-
-- Fix compiler warnings.
-
-- Fix CacheMap crash in CI tests.
-
-## [1.6.0] - 2021-05-15
-
-### API changes list
-
-- Add option to set default handler.
-
-- Add the setTimeout() method to the DbClient class and the RedisClient class.
-
-- Add the validateCert parameter to the newWebSocketClient method.
-
-### Changed
-
-- A few mini changes to drogon_ctl command.
-
-- Improve the MultiPartParser class.
-
-- Add GNU -Werror & fix warnings.
-
-- Enhancements on files part.
-
-- Add version/soversion to shared library.
-
-- Disallow coroutines to be resolved as plain subroutine handlers.
-
-- Send the content-length header even if the body(POST,PUT,OPTIONS,PATCH) is empty.
-
-- Use make_exception_ptr instead of throw/catch when possible.
-
-- Remove duplicated inclusion.
-
-- Print error before terminating in AsyncTask.
-
-- Allow users to override drogon Find modules.
-
-- Use two-phase construction for the DbClientImpl and the RedisClientImpl.
-
-- Add support 'select ' for redis.
-
-### Fixed
-
-- Fix a bug of the Transaction class.
-
-- Copy CoroMapper.h to installation location.
-
-- Remove the related request from the buffer if it's not sent after the timeout.
-
-- Fix ORM with SQLite3 not compiling on Arch Linux.
-
-- Fix an error when constructing RedisClientImpl objects.
-
-- Fix coroutine frame leak upon assigning to awaitable.
-
-- Set running flag to true before installing plugins.
-
-- Fix double free in coroutine exception handling.
-
-## [1.5.1] - 2021-04-10
-
-### Fixed
-
-- Fix a bug of reflection failure.
-
-## [1.5.0] - 2021-04-10
-
-### API changes list
-
-- Add option to disable signal handling.
-
-- Added newFileResponse Support for buffers in memory.
-
-- Add a method to HttpRequest to set the user_agent header.
-
-- Catch exceptions thrown by handlers.
-
-### Changed
-
-- Add convert method to models.
-
-- Add Arch Dockerfile.
-
-- Add Redis support.
-
-- Print error and exit when IP parsing failed in server startup.
-
-- Use a canonical way of calling max() function on Windows.
-
-- Remove an assertion statement in the HttpClientImpl class.
-
-- Send ping messages by default for WebSockets.
-
-- Use canonical cmake logic for cross-compilation.
-
-- set make job count to the number of threads in GitHub Actions workflow.
-
-- Use lambda instead of std::bind in HttpServer.
-
-- Add exports macro to allow Shared Library with hidden symbols by default.
-
-- Remove repeated class names on relationships from the model generator.
-
-### Fixed
-
-- Fix compile warnings in SQL client.
-
-- Fix compilation errors for the TimeFilter example.
-
-- Fix build.sh missing nproc error in build for macOS.
-
-- Fix a bug when creating sqlite3 models.
-
-- Fix two building corner cases, CMake quality of life improvements.
-
-- Add CoroMapper to models' friends.
-
-## [1.4.1] - 2021-03-07
-
-### Fixed
-
-- Fix a bug of DbClientImpl class that can lead to a crash when database connections are breaking.
-
-## [1.4.0] - 2021-03-05
-
-### API changes list
-
-- Add coroutine support.
-
-- Add default value interface to SqlBinder for MySQL and PostgreSQL.
-
-- Support SNI in the HttpClient class.
-
-- Validate certificate in HttpClient.
-
-- HttpRequest: add a feature to avoid URL encoding of the path.
-
-### Changed
-
-- Handle cross-compiling properly.
-
-- Lowercase all HTTP headers, add webp and avif types.
-
-- Modify FindMySQL.cmake
-
-### Fixed
-
-- Fix an error in the HttpClient class when a response has no content-length.
-
-- Return 404 or 405 responses correctly.
-
-- Fix compilation errors on vs2019.
-
-- Fix stack use after scope error in client_example.
-
-- Fix the error when the SSL handshake fails.
-
-## [1.3.0] - 2021-01-16
-
-### API changes list
-
-- Add an option for setting float precision in Json string.
-
-### Fixed
-
-- Fix brotli link order.
-
-- Fix cmake with drogonctl cross-compilation.
-
-- sqlite3: Insert into stmtsMap_ as string_view.
-
-- Fix some bugs when creating models via drogon_ctl.
-
-- Fix an error in sqlite3 ORM generator.
-
-- Fix an error with missing composite key to sqlite3 ORM generator.
-
-### Changed
-
-- Remove the use of std::filesystem to adapt to old compilers.
-
-- Add github actions.
-
-- Serve wasm files with the correct MIME type.
-
-## [1.2.0] - 2020-12-12
-
-### Fixed
-
-- Fix error when receiving response without content-length header.
-
-- Fix a stack-overflow error when high concurrency happening on sqlite3.
-
-- Fix MinGW ORM building by enabling htonll and ntohll.
-
-### Changed
-
-- Modify the WebSocketTest controller to create a simple chat room.
-
-- Add support for OpenBSD.
-
-- Return 400 if the content-length is invalid.
-
-- Don't send content type in a 304 response.
-
-- Add the reuse_port option to app() interface.
-
-- Add the 'std::optional' support in the SqlBinder class and the Session class.
-
-- Add implicit page resolving capability.
-
-## [1.1.0] - 2020-10-31
-
-### Fixed
-
-- Fix failing to connect to DB if parameters contains spaces.
-
-- Fix a CMAKE bug when SHARED and EXAMPLES are on.
-
-- Fix the HttpServer::isWebSocket method.
-
-- Find MariaDB client library correctly on Ubuntu 20.04.
-
-- Fix a bug when creating sqlite3 database models.
-
-- Fix a bug in the Mapper::insertFuture method.
-
-### Changed
-
-- Disable TLS1.0/1.1 on HTTPS by default.
-
-- Use explicit lambda capture lists.
-
-- Modify the procedure of the app().run() method.
-
-- Support namespaces when creating view source files.
-
-- Add --path-to-namespace option to drogon_ctl for creating views.
-
-- Add the Host and Sec-WebSocket-Version headers when connecting to a websocket server.
-
-## [1.0.0] - 2020-09-27
-
-### Fixed
-
-- Fix an issue of simple_reverse_proxy when handling chunked transfer-encoding.
-
-- Fix a bug when losting connection to MySQL server during query.
-
-- Remove the expired std::iterator template.
-
-- Fix a bug when creating models in some special cases.
-
-### API changes list
-
-- Modify methods related to headers.
-
-- Remove the expired std::iterator template.
-
-- Add getListeners() method to the HttpAppFramework class.
-
-- Remove the useless method stat() from the PluginBase class.
-
-- Add ConfigLoader::ConfigLoader(const Json::Value &data).
-
-### Changed
-
-- Add support for status code 418.
-
-- Modify session handling.
-
-- Modify the FileUpload.csp in simple_example to avoid CORS.
-
-- remove execution permission on /tmp/drogon.lock.
-
-## [1.0.0-beta21] - 2020-08-19
-
-### Changed
-
-- Modify the Result class in ORM.
-
-### Fixed
-
-- Fix zlib link error on Windows for the latest vcpkg.
-
-## [1.0.0-beta20] - 2020-08-15
-
-### API changes list
-
-- Provide users with a method to change the session ID of a session.
-
-### Changed
-
-- Modify parseContentType function.
-
-- Modify the docker file to build release version in docker.
-
-- Set session to requests for websockets.
-
-- Modify parseContentType function.
-
-- Change the return value type of the mktime() function in models.
-
-- Fix compilation warning of sprintf function.
-
-### Fixed
-
-- Fix a bug when saving uploaded files on Windows.
-
-- Fix a MySQL issue when connections are lost.
-
-- Resolve an issue when sending big files (>=2GB) on Windows.
-
-- Fix boost::string_view compilation error of MysqlConnection class.
-
-- Set the response Access-Control-Allow-Headers header correctly for CORS.
-
-- Fix a bug in drogon_ctl when creating a model, that causes to write source files multiple times.
-
-## [1.0.0-beta19] - 2020-07-16
-
-### API changes list
-
-- Add a method to disable unicode escaping in json string.
-
-- Add a timeout parameter when sending HTTP requests.
-
-- Add the getJsonError method.
-
-### Changed
-
-- Remove the restriction on the location of layout tags in views.
-
-- Add a way to set the character set when creating DbClient objects.
-
-- Make `GET` as the only method for accessing static files.
-
-- Modify the 404 pages generator.
-
-- Modify the DbClient class.
-
-- Optimize the HttpResponse class.
-
-### Fixed
-
-- Properly handle chunked encoding requests.
-
-- Destroy DNS resolver of HttpClient in the correct thread.
-
-- Add the header to resolve build errors in VS2017.
-
-## [1.0.0-beta18] - 2020-06-14
-
-### API changes list
-
-- Add a new joinpoint of AOP for modification on each HTTP response.
-
-- Add a method for the TERM signal handling.
-
-- Add getContextRef method to the WebSocketConnection class.
-
-### Changed
-
-- Create a class template for publish subscribe pattern.
-
-- Add contribution recommendations.
-
-- Send a close message when closing a web socket connection.
-
-- Add additional formats for getHttpDate function.
-
-- Make app().run() method callable on a non-main thread.
-
-- Add digest filter in examples.
-
-- Use string_view to parse multipart/form-data requests.
-
-### Fixed
-
-- Fix building of ORM on FreeBSD.
-
-- Fix a Mysql connection error on Windows.
-
-- Fix a bug in ListenerManager::getIOLoop().
-
-- Fix the count() method of Mysql ORM.
-
-- Fix a compilation issue on windows.
-
-- Fix model generation for PostgreSQL primary keys.
-
-- Fix a bug with quoted column names in sqlite3 databases.
-
-## [1.0.0-beta17] - 2020-05-22
-
-### API changes list
-
-- Add methods to get DbClient connection status
-
-### Changed
-
-- Add causal profiling with coz
-
-- Add filters on static file locations
-
-- Pass data from view to its layout container
-
-- Add additional HttpStatusCodes and implement a custom error handler
-
-- Modify drogon_ctl to show more compilation information
-
-### Fixed
-
-- Fix a bug in drogon_ctl (when size of a line is larger than buffer size)
-
-- Fix a connection bug of MariaDB clients
-
-## [1.0.0-beta16] - 2020-04-27
-
-### API changes list
-
-- Standardize Row and Result api in ORM
-
-### Changed
-
-- Add support for brotli compression
-
-- Parse content-type of HTTP requests
-
-- Remove non standard macros
-
-- Support url safe base64 codec
-
-## [1.0.0-beta15] - 2020-03-28
-
-### API changes list
-
-- Modify the Attributes interface of the HttpRequest class
-
-- Add the getHomePage() method to HttpAppFramework
-
-### Changed
-
-- Support br compression files
-
-- Update Content-Type support for PDF
-
-- Add support for MSVC 2015
-
-- Optimize the rendering of HTTP responses
-
-- Update the Dynamic Views Loading, add the `layout` tag
-
-- Graceful shutdown
-
-### Fixed
-
-- Fix error when finding the jsoncpp library
-
-- Fix the 'many to many' relationship in ORM
-
-- Fix a bug when creating json responses
-
-- Fix a bug on filters with WebSocketControllers
-
-- Fix a fatal bug in the MysqlConnection class
-
-- Fix crash with partial matched url
-
-- Fix null jsonObject from newHttpJsonRequest
-
-## [1.0.0-beta14] - 2020-02-17
-
-### API changes list
-
-- None
-
-### Added
-
-- Add IOLoop access function
-
-### Changed
-
-- Add support for regular expressions when routing
-
-- Add location configuration for static resources
-
-- Port drogon to Windows
-
-- Support 'password' keyword in configuration files
-
-- Remove get_version.sh
-
-- Modify dynamic view loading algorithm, add 'layout' tag for view generation.
-
-### Fixed
-
-- Fix an issue of out-of-range (#334)
-
-- Fix a bug in views generation (#341)
-
-## [1.0.0-beta13] - 2020-01-04
-
-### API changes list
-
-- None
-
-### Changed
-
-- Add some unit tests (based on gtest)
-
-- Add a reverse proxy example
-
-- Make a patch to support the ossp UUID library
-
-- Make shared linking possible
-
-- Add the drogon::OStringStream class
-
-- Optimize ORM
-
-- Modify singleton logic of DrClassMap
-
-### Fixed
-
-- Fix an error in the batch mode of libpq
-
-- Fix an error when clients use HTTP1.0
-
-## [1.0.0-beta12] - 2019-11-30
-
-### Changed
-
-- Make dg_ctl a symlink
-
-- Modify some code styles
-
-- Explicitly set path to '/' for JSESSIONID cookie
-
-- Handle gzip errors safely
-
-- Add the SecureSSLRedirector plugin
-
-### Fixed
-
-- Fix a bug in dg_ctl for creating models of sqlite3
-
-- Reset the flag used to parse json to false before recycling HttpRequest objects
-
-## [1.0.0-beta11] - 2019-11-06
-
-### Changed
-
-- Delete useless log output
-
-## [1.0.0-beta10] - 2019-11-04
-
-### API changes list
-
-- None
-
-### Changed
-
-- Add the headers configuration option for static files
-
-### Fixed
-
-- Fix(compilation on alpine): Replace u_short alias.
-
-
-## [1.0.0-beta9] - 2019-10-28
-
-### API changes list
-
-- Add interfaces for accessing content of attachments.
-
-- Add option to disable setting the 404 status code of the custom 404 page.
-
-- Make user can use any string as a placeholder's name in routing patterns.
-
-- Add type conversion methods to the HttpRequest and HttpResponse classes.
-
-### Changed
-
-- Modify cmake configuration.
-
-- Modify the quit() method.
-
-- Implement relationships in ORM.
-
-### Fixed
-
-- Fix size_t underflow of drogon_ctl.
-
-- Fix some race conditions.
-
-- Fix a busy loop bug when connections to MySQL server are timeout.
-
-
-## [1.0.0-beta8] - 2019-10-03
-
-### API changes list
-
-- Add length() method to the Field class.
-
-- Add `as()` function template specialization to the Field class.
-
-- Add add attribute store methods to the HttpRequest class.
-
-- Add the setCustomContentTypeString() method to the HttpRequest class.
-
-- Add thread storage.
-
-
-### Changed
-
-- Use .find('x') instead of .find("x") in a string search.
-
-- Add the ability to create restful API controllers.
-
-### Fixed
-
-- Fix a bug of creating models for MySQL.
-
-- Fix a bug when HTTP method is PUT.
-
-- Fix a bug when using 'is null' substatement in ORM.
-
-- Fix a sqlite3 bug when some SQL errors occur.
-
-- Fix bug with parsing json.
-
-- Fix url decode.
-
-- Fix a error in HttpClient.
-
-- Fix a error in setThreadNum method.
-
-- Fix some race conditions.
-
-## [1.0.0-beta7] - 2019-08-31
-
-### API changes list
-
-- Remove the default value parameter of some methods (#220)
-
-### Changed
-
-- Optimize DNS in HttpClient and WebSocketClient (support c-ares library).
-
-- Reduce dependencies between declarations.
-
-- Add database tests in the travis CI and add test cases to database tests.
-
-- Reduce size of docker image.
-
-- Make the framework API support chained calls.
-
-- Add a synchronous join point for AOP.
-
-- Modify the CMakeLists to modern cmake style.
-
-### Fixed
-
-- Fix bugs in default return values of functions(#220),
-
-- Fix a bug in the cmake configuration file when there's '+' in the building path.
-
-- Fix a bug in drogon_ctl (when creating orm models)
-
-
-## [1.0.0-beta6] - 2019-08-08
-
-### API changes list
-
-- None
-
-### Changed
-
-- Modify the 'create view' sub-command of drogon_ctl
-
-- Optimize the transmission of pipelining responses.
-
-- Add the DrogonConfig.cmake file so that users can use drogon with the `find_package(Drogon)` command.
-
-## [1.0.0-beta5] - 2019-08-01
-
-### API changes list
-
-- None
-
-### Added
-
-- Add two methods to control if the Server header or the Date header is sent to clients with HTTP responses.
- * void HttpAppFramework::enableServerHeader(bool);
- * void HttpAppFramework::enableDateHeader(bool);
-
-### Changed
-
-- Support high performance batch mode of libpq.
-
-### Fixed
-
-- None
-
-## [1.0.0-beta4] - 2019-07-30
-
-### API changes list
-
-- HttpRequest::query() returns a const reference of std::string instead of a string_view
-- WebSocketConnection::setContext(), WebSocketConnection::getContext(), etc.
-- Remove the config.h from public API.
-
-### Added
-
-- None
-
-### Changed
-
-- Modify the CMakeLists.txt
-- Modify the get_version.sh
-
-### Fixed
-
-- None
-
-## [1.0.0-beta3] - 2019-07-28
-
-### API changes list
-
-- None
-
-### Added
-
-- Add a README file for examples.
-- Add some managers to reduce the size of the HttpAppFrameworkImpl code.
-- Add missing wasm ContentType.
-
-### Changed
-
-- Update the submodule - trantor.
-- Optimize processing of HTTP pipelining.
-
-### Fixed
-
-- Fix an error in the HttpClient class when sending a request using the HEAD method.
-
-## [1.0.0-beta2] - 2019-07-10
-
-### API changes list
-
-- Add setBody methods to the HttpRequest class.
-- Add the setContentTypeCodeAndCustomString method to the HttpResponse class.
-
-### Added
-
-- Add stress testing command to drogon_ctl.
-- Add -v, -h parameters to drogon_ctl.
-
-### Changed
-
-- Update the submodule - trantor.
-- Modify the handling of CORS.
-- Optimize the htmlTranslate method and the Field class.
-- Make all listeners share IO threads in the MacOS/Unix system.
-
-### Fixed
-
-- Fix a bug of the IsPlugin class.
-- Use default constructor of string_view to reset _statusMessage to fix a warning on GCC 9.1 on Arch Linux.
-
-## [1.0.0-beta1] - 2019-06-11
-
-[Unreleased]: https://github.com/an-tao/drogon/compare/v1.8.7...cpp14
-
-[1.8.7]: https://github.com/an-tao/drogon/compare/v1.8.6...v1.8.7
-
-[1.8.6]: https://github.com/an-tao/drogon/compare/v1.8.5...v1.8.6
-
-[1.8.5]: https://github.com/an-tao/drogon/compare/v1.8.4...v1.8.5
-
-[1.8.4]: https://github.com/an-tao/drogon/compare/v1.8.3...v1.8.4
-
-[1.8.3]: https://github.com/an-tao/drogon/compare/v1.8.2...v1.8.3
-
-[1.8.2]: https://github.com/an-tao/drogon/compare/v1.8.1...v1.8.2
-
-[1.8.1]: https://github.com/an-tao/drogon/compare/v1.8.0...v1.8.1
-
-[1.8.0]: https://github.com/an-tao/drogon/compare/v1.7.5...v1.8.0
-
-[1.7.5]: https://github.com/an-tao/drogon/compare/v1.7.4...v1.7.5
-
-[1.7.4]: https://github.com/an-tao/drogon/compare/v1.7.3...v1.7.4
-
-[1.7.3]: https://github.com/an-tao/drogon/compare/v1.7.2...v1.7.3
-
-[1.7.2]: https://github.com/an-tao/drogon/compare/v1.7.1...v1.7.2
-
-[1.7.1]: https://github.com/an-tao/drogon/compare/v1.7.0...v1.7.1
-
-[1.7.0]: https://github.com/an-tao/drogon/compare/v1.6.0...v1.7.0
-
-[1.6.0]: https://github.com/an-tao/drogon/compare/v1.5.1...v1.6.0
-
-[1.5.1]: https://github.com/an-tao/drogon/compare/v1.5.0...v1.5.1
-
-[1.5.0]: https://github.com/an-tao/drogon/compare/v1.4.1...v1.5.0
-
-[1.4.1]: https://github.com/an-tao/drogon/compare/v1.4.0...v1.4.1
-
-[1.4.0]: https://github.com/an-tao/drogon/compare/v1.3.0...v1.4.0
-
-[1.3.0]: https://github.com/an-tao/drogon/compare/v1.2.0...v1.3.0
-
-[1.2.0]: https://github.com/an-tao/drogon/compare/v1.1.0...v1.2.0
-
-[1.1.0]: https://github.com/an-tao/drogon/compare/v1.0.0...v1.1.0
-
-[1.0.0]: https://github.com/an-tao/drogon/compare/v1.0.0-beta21...v1.0.0
-
-[1.0.0-beta21]: https://github.com/an-tao/drogon/compare/v1.0.0-beta20...v1.0.0-beta21
-
-[1.0.0-beta20]: https://github.com/an-tao/drogon/compare/v1.0.0-beta19...v1.0.0-beta20
-
-[1.0.0-beta19]: https://github.com/an-tao/drogon/compare/v1.0.0-beta18...v1.0.0-beta19
-
-[1.0.0-beta18]: https://github.com/an-tao/drogon/compare/v1.0.0-beta17...v1.0.0-beta18
-
-[1.0.0-beta17]: https://github.com/an-tao/drogon/compare/v1.0.0-beta16...v1.0.0-beta17
-
-[1.0.0-beta16]: https://github.com/an-tao/drogon/compare/v1.0.0-beta15...v1.0.0-beta16
-
-[1.0.0-beta15]: https://github.com/an-tao/drogon/compare/v1.0.0-beta14...v1.0.0-beta15
-
-[1.0.0-beta14]: https://github.com/an-tao/drogon/compare/v1.0.0-beta13...v1.0.0-beta14
-
-[1.0.0-beta13]: https://github.com/an-tao/drogon/compare/v1.0.0-beta12...v1.0.0-beta13
-
-[1.0.0-beta12]: https://github.com/an-tao/drogon/compare/v1.0.0-beta11...v1.0.0-beta12
-
-[1.0.0-beta11]: https://github.com/an-tao/drogon/compare/v1.0.0-beta10...v1.0.0-beta11
-
-[1.0.0-beta10]: https://github.com/an-tao/drogon/compare/v1.0.0-beta9...v1.0.0-beta10
-
-[1.0.0-beta9]: https://github.com/an-tao/drogon/compare/v1.0.0-beta8...v1.0.0-beta9
-
-[1.0.0-beta8]: https://github.com/an-tao/drogon/compare/v1.0.0-beta7...v1.0.0-beta8
-
-[1.0.0-beta7]: https://github.com/an-tao/drogon/compare/v1.0.0-beta6...v1.0.0-beta7
-
-[1.0.0-beta6]: https://github.com/an-tao/drogon/compare/v1.0.0-beta5...v1.0.0-beta6
-
-[1.0.0-beta5]: https://github.com/an-tao/drogon/compare/v1.0.0-beta4...v1.0.0-beta5
-
-[1.0.0-beta4]: https://github.com/an-tao/drogon/compare/v1.0.0-beta3...v1.0.0-beta4
-
-[1.0.0-beta3]: https://github.com/an-tao/drogon/compare/v1.0.0-beta2...v1.0.0-beta3
-
-[1.0.0-beta2]: https://github.com/an-tao/drogon/compare/v1.0.0-beta1...v1.0.0-beta2
-
-[1.0.0-beta1]: https://github.com/an-tao/drogon/releases/tag/v1.0.0-beta1
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/LICENSE b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/LICENSE
deleted file mode 100644
index 3c9a109e574a..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2019-2023 An Tao
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/README.md b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/README.md
deleted file mode 100755
index d200fb1a16a5..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/README.md
+++ /dev/null
@@ -1,221 +0,0 @@
-![](https://github.com/an-tao/drogon/wiki/images/drogon-white.jpg)
-
-[![Build Status](https://github.com/an-tao/drogon/workflows/Build%20Drogon/badge.svg?branch=master)](https://github.com/drogonframework/drogon/actions)
-[![Join the chat at https://gitter.im/drogon-web/community](https://badges.gitter.im/drogon-web/community.svg)](https://gitter.im/drogon-web/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-[![Join the telegram group at https://t.me/joinchat/_mMNGv0748ZkMDAx](https://img.shields.io/badge/Telegram-2CA5E0?style=flat&logo=telegram&logoColor=white)](https://t.me/joinchat/_mMNGv0748ZkMDAx)
-[![Docker image](https://img.shields.io/badge/Docker-image-blue.svg)](https://cloud.docker.com/u/drogonframework/repository/docker/drogonframework/drogon)
-
-English | [简体中文](./README.zh-CN.md) | [繁體中文](./README.zh-TW.md)
-### Overview
-**Drogon** is a C++14/17-based HTTP application framework. Drogon can be used to easily build various types of web application server programs using C++. **Drogon** is the name of a dragon in the American TV series "Game of Thrones" that I really like.
-
-Drogon is a cross-platform framework, It supports Linux, macOS, FreeBSD, OpenBSD, HaikuOS, and Windows. Its main features are as follows:
-
-* Use a non-blocking I/O network lib based on epoll (kqueue under macOS/FreeBSD) to provide high-concurrency, high-performance network IO, please visit the [TFB Tests Results](https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=composite) for more details;
-* Provide a completely asynchronous programming mode;
-* Support Http1.0/1.1 (server side and client side);
-* Based on template, a simple reflection mechanism is implemented to completely decouple the main program framework, controllers and views.
-* Support cookies and built-in sessions;
-* Support back-end rendering, the controller generates the data to the view to generate the Html page. Views are described by CSP template files, C++ codes are embedded into Html pages through CSP tags. And the drogon command-line tool automatically generates the C++ code files for compilation;
-* Support view page dynamic loading (dynamic compilation and loading at runtime);
-* Provide a convenient and flexible routing solution from the path to the controller handler;
-* Support filter chains to facilitate the execution of unified logic (such as login verification, Http Method constraint verification, etc.) before handling HTTP requests;
-* Support https (based on OpenSSL);
-* Support WebSocket (server side and client side);
-* Support JSON format request and response, very friendly to the Restful API application development;
-* Support file download and upload;
-* Support gzip, brotli compression transmission;
-* Support pipelining;
-* Provide a lightweight command line tool, drogon_ctl, to simplify the creation of various classes in Drogon and the generation of view code;
-* Support non-blocking I/O based asynchronously reading and writing database (PostgreSQL and MySQL(MariaDB) database);
-* Support asynchronously reading and writing sqlite3 database based on thread pool;
-* Support Redis with asynchronous reading and writing;
-* Support ARM Architecture;
-* Provide a convenient lightweight ORM implementation that supports for regular object-to-database bidirectional mapping;
-* Support plugins which can be installed by the configuration file at load time;
-* Support AOP with build-in joinpoints.
-* Support C++ coroutines
-
-## A very simple example
-
-Unlike most C++ frameworks, the main program of the drogon application can be kept clean and simple. Drogon uses a few tricks to decouple controllers from the main program. The routing settings of controllers can be done through macros or configuration file.
-
-Below is the main program of a typical drogon application:
-
-```c++
-#include
-using namespace drogon;
-int main()
-{
- app().setLogPath("./")
- .setLogLevel(trantor::Logger::kWarn)
- .addListener("0.0.0.0", 80)
- .setThreadNum(16)
- .enableRunAsDaemon()
- .run();
-}
-```
-
-It can be further simplified by using configuration file as follows:
-
-```c++
-#include
-using namespace drogon;
-int main()
-{
- app().loadConfigFile("./config.json").run();
-}
-```
-
-Drogon provides some interfaces for adding controller logic directly in the main() function, for example, user can register a handler like this in Drogon:
-
-```c++
-app().registerHandler("/test?username={name}",
- [](const HttpRequestPtr& req,
- std::function &&callback,
- const std::string &name)
- {
- Json::Value json;
- json["result"]="ok";
- json["message"]=std::string("hello,")+name;
- auto resp=HttpResponse::newHttpJsonResponse(json);
- callback(resp);
- },
- {Get,"LoginFilter"});
-```
-
-While such interfaces look intuitive, they are not suitable for complex business logic scenarios. Assuming there are tens or even hundreds of handlers that need to be registered in the framework, isn't it a better practice to implement them separately in their respective classes? So unless your logic is very simple, we don't recommend using above interfaces. Instead, we can create an HttpSimpleController as follows:
-
-```c++
-/// The TestCtrl.h file
-#pragma once
-#include
-using namespace drogon;
-class TestCtrl:public drogon::HttpSimpleController
-{
-public:
- void asyncHandleHttpRequest(const HttpRequestPtr& req, std::function &&callback) override;
- PATH_LIST_BEGIN
- PATH_ADD("/test",Get);
- PATH_LIST_END
-};
-
-/// The TestCtrl.cc file
-#include "TestCtrl.h"
-void TestCtrl::asyncHandleHttpRequest(const HttpRequestPtr& req,
- std::function &&callback)
-{
- //write your application logic here
- auto resp = HttpResponse::newHttpResponse();
- resp->setBody("Hello, world!
");
- resp->setExpiredTime(0);
- callback(resp);
-}
-```
-
-**Most of the above programs can be automatically generated by the command line tool `drogon_ctl` provided by drogon** (The command is `drogon_ctl create controller TestCtrl`). All the user needs to do is add their own business logic. In the example, the controller returns a `Hello, world!` string when the client accesses the `http://ip/test` URL.
-
-For JSON format response, we create the controller as follows:
-
-```c++
-/// The header file
-#pragma once
-#include
-using namespace drogon;
-class JsonCtrl : public drogon::HttpSimpleController
-{
- public:
- void asyncHandleHttpRequest(const HttpRequestPtr &req, std::function &&callback) override;
- PATH_LIST_BEGIN
- //list path definitions here;
- PATH_ADD("/json", Get);
- PATH_LIST_END
-};
-
-/// The source file
-#include "JsonCtrl.h"
-void JsonCtrl::asyncHandleHttpRequest(const HttpRequestPtr &req,
- std::function &&callback)
-{
- Json::Value ret;
- ret["message"] = "Hello, World!";
- auto resp = HttpResponse::newHttpJsonResponse(ret);
- callback(resp);
-}
-```
-
-Let's go a step further and create a demo RESTful API with the HttpController class, as shown below (Omit the source file):
-
-```c++
-/// The header file
-#pragma once
-#include
-using namespace drogon;
-namespace api
-{
-namespace v1
-{
-class User : public drogon::HttpController
-{
- public:
- METHOD_LIST_BEGIN
- //use METHOD_ADD to add your custom processing function here;
- METHOD_ADD(User::getInfo, "/{id}", Get); //path is /api/v1/User/{arg1}
- METHOD_ADD(User::getDetailInfo, "/{id}/detailinfo", Get); //path is /api/v1/User/{arg1}/detailinfo
- METHOD_ADD(User::newUser, "/{name}", Post); //path is /api/v1/User/{arg1}
- METHOD_LIST_END
- //your declaration of processing function maybe like this:
- void getInfo(const HttpRequestPtr &req, std::function &&callback, int userId) const;
- void getDetailInfo(const HttpRequestPtr &req, std::function &&callback, int userId) const;
- void newUser(const HttpRequestPtr &req, std::function &&callback, std::string &&userName);
- public:
- User()
- {
- LOG_DEBUG << "User constructor!";
- }
-};
-} // namespace v1
-} // namespace api
-```
-
-As you can see, users can use the `HttpController` to map paths and parameters at the same time. This is a very convenient way to create a RESTful API application.
-
-In addition, you can also find that all handler interfaces are in asynchronous mode, where the response is returned by a callback object. This design is for performance reasons because in asynchronous mode the drogon application can handle a large number of concurrent requests with a small number of threads.
-
-After compiling all of the above source files, we get a very simple web application. This is a good start. **For more information, please visit the [wiki](https://github.com/an-tao/drogon/wiki/ENG-01-Overview)**
-
-## Cross-compilation
-
-Drogon supports cross-compilation, you should define the `CMAKE_SYSTEM_NAME` in toolchain file, for example:
-
-```cmake
-set(CMAKE_SYSTEM_NAME Linux)
-set(CMAKE_SYSTEM_PROCESSOR arm)
-```
-
-You can disable building options for examples and drogon_ctl by settings `BUILD_EXAMPLES` and `BUILD_CTL` to `OFF` in the toolchain file.
-
-## Building options
-
-Drogon provides some building options, you can enable or disable them by setting the corresponding variables to `ON` or `OFF` in the cmake command line, cmake file etc...
-
-| Option name | Description | Default value |
-| :--- | :--- | :--- |
-| BUILD_CTL | Build drogon_ctl | ON |
-| BUILD_EXAMPLES | Build examples | ON |
-| BUILD_ORM | Build orm | ON |
-| COZ_PROFILING | Use coz for profiling | OFF |
-| BUILD_SHARED_LIBS | Build drogon as a shared lib | OFF |
-| BUILD_DOC | Build Doxygen documentation | OFF |
-| BUILD_BROTLI | Build Brotli | ON |
-| BUILD_YAML_CONFIG | Build yaml config | ON |
-| USE_SUBMODULE | Use trantor as a submodule | ON |
-
-
-## Contributions
-
-This project exists thanks to all the people who contribute code.
-
-
-
-Every contribution is welcome. Please refer to the [contribution guidelines](CONTRIBUTING.md) for more information.
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/README.zh-CN.md b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/README.zh-CN.md
deleted file mode 100755
index d2060f6a692e..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/README.zh-CN.md
+++ /dev/null
@@ -1,198 +0,0 @@
-![](https://github.com/an-tao/drogon/wiki/images/drogon-white.jpg)
-
-[![Build Status](https://github.com/an-tao/drogon/workflows/Build%20Drogon/badge.svg?branch=master)](https://github.com/drogonframework/drogon/actions)
-[![Join the chat at https://gitter.im/drogon-web/community](https://badges.gitter.im/drogon-web/community.svg)](https://gitter.im/drogon-web/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-[![Join the telegram group at https://t.me/joinchat/_mMNGv0748ZkMDAx](https://img.shields.io/badge/Telegram-2CA5E0?style=flat&logo=telegram&logoColor=white)](https://t.me/joinchat/_mMNGv0748ZkMDAx)
-[![Docker image](https://img.shields.io/badge/Docker-image-blue.svg)](https://cloud.docker.com/u/drogonframework/repository/docker/drogonframework/drogon)
-
-[English](./README.md) | 简体中文 | [繁體中文](./README.zh-TW.md)
-
-**Drogon**是一个基于C++14/17的Http应用框架,使用Drogon可以方便的使用C++构建各种类型的Web应用服务端程序。
-本版本库是github上[Drogon工程](https://github.com/an-tao/drogon)的镜像库。**Drogon**是作者非常喜欢的美剧《权力的游戏》中的一条龙的名字(汉译作卓耿),和龙有关但并不是dragon的误写,为了不至于引起不必要的误会这里说明一下。
-
-Drogon是一个跨平台框架,它支持Linux,也支持macOS、FreeBSD,OpenBSD,HaikuOS,和Windows。它的主要特点如下:
-
-* 网络层使用基于epoll(macOS/FreeBSD下是kqueue)的非阻塞IO框架,提供高并发、高性能的网络IO。详细请见[TFB Tests Results](https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=composite);
-* 全异步编程模式;
-* 支持Http1.0/1.1(server端和client端);
-* 基于template实现了简单的反射机制,使主程序框架、控制器(controller)和视图(view)完全解耦;
-* 支持cookies和内建的session;
-* 支持后端渲染,把控制器生成的数据交给视图生成Html页面,视图由CSP模板文件描述,通过CSP标签把C++代码嵌入到Html页面,由drogon的命令行工具在编译阶段自动生成C++代码并编译;
-* 支持运行期的视图页面动态加载(动态编译和加载so文件);
-* 非常方便灵活的路径(path)到控制器处理函数(handler)的映射方案;
-* 支持过滤器(filter)链,方便在控制器之前执行统一的逻辑(如登录验证、Http Method约束验证等);
-* 支持https(基于OpenSSL实现);
-* 支持websocket(server端和client端);
-* 支持Json格式请求和应答, 对Restful API应用开发非常友好;
-* 支持文件下载和上传,支持sendfile系统调用;
-* 支持gzip/brotli压缩传输;
-* 支持pipelining;
-* 提供一个轻量的命令行工具drogon_ctl,帮助简化各种类的创建和视图代码的生成过程;
-* 基于非阻塞IO实现的异步数据库读写,目前支持PostgreSQL和MySQL(MariaDB)数据库;
-* 基于线程池实现sqlite3数据库的异步读写,提供与上文数据库相同的接口;
-* 支持Redis异步读写;
-* 支持ARM架构;
-* 方便的轻量级ORM实现,支持常规的对象到数据库的双向映射操作;
-* 支持插件,可通过配置文件在加载期动态拆装;
-* 支持内建插入点的AOP
-* 支持C++协程
-
-## 一个非常简单的例子
-
-不像大多数C++框架那样,drogon的主程序可以保持非常简单。 Drogon使用了一些小技巧使主程序和控制器解耦合. 控制器的路由设置可以在控制器类中定义或者配置文件中完成.
-
-下面是一个典型的主程序的样子:
-
-```c++
-#include
-using namespace drogon;
-int main()
-{
- app().setLogPath("./")
- .setLogLevel(trantor::Logger::kWarn)
- .addListener("0.0.0.0", 80)
- .setThreadNum(16)
- .enableRunAsDaemon()
- .run();
-}
-```
-
-如果使用配置文件,可以进一步简化成如下的样子:
-
-```c++
-#include
-using namespace drogon;
-int main()
-{
- app().loadConfigFile("./config.json").run();
-}
-```
-
-当然,Drogon也提供了一些接口,使用户可以在main()函数中直接添加控制器逻辑,比如,用户可以注册一个lambda处理器到drogon框架中,如下所示:
-
-```c++
-app().registerHandler("/test?username={name}",
- [](const HttpRequestPtr& req,
- std::function &&callback,
- const std::string &name)
- {
- Json::Value json;
- json["result"]="ok";
- json["message"]=std::string("hello,")+name;
- auto resp=HttpResponse::newHttpJsonResponse(json);
- callback(resp);
- },
- {Get,"LoginFilter"});
-```
-
-
-这看起来是很方便,但是这并不适用于复杂的应用,试想假如有数十个或者数百个处理函数要注册进框架,main()函数将膨胀到不可读的程度。显然,让每个包含处理函数的类在自己的定义中完成注册是更好的选择。所以,除非你的应用逻辑非常简单,我们不推荐使用上述接口,更好的实践是,我们可以创建一个HttpSimpleController对象,如下:
-
-
-```c++
-/// The TestCtrl.h file
-#pragma once
-#include
-using namespace drogon;
-class TestCtrl:public drogon::HttpSimpleController
-{
-public:
- void asyncHandleHttpRequest(const HttpRequestPtr& req, std::function &&callback) override;
- PATH_LIST_BEGIN
- PATH_ADD("/test",Get);
- PATH_LIST_END
-};
-
-/// The TestCtrl.cc file
-#include "TestCtrl.h"
-void TestCtrl::asyncHandleHttpRequest(const HttpRequestPtr& req,
- std::function &&callback)
-{
- //write your application logic here
- auto resp = HttpResponse::newHttpResponse();
- resp->setBody("Hello, world!
");
- resp->setExpiredTime(0);
- callback(resp);
-}
-```
-
-**上面程序的大部分代码都可以由`drogon_ctl`命令创建**(这个命令是`drogon_ctl create controller TestCtr`)。用户所需做的就是添加自己的业务逻辑。在这个例子中,当客户端访问URL`http://ip/test`时,控制器简单的返回了一个`Hello, world!`页面。
-
-对于JSON格式的响应,我们可以像下面这样创建控制器:
-
-```c++
-/// The header file
-#pragma once
-#include
-using namespace drogon;
-class JsonCtrl : public drogon::HttpSimpleController
-{
- public:
- void asyncHandleHttpRequest(const HttpRequestPtr &req, std::function &&callback) override;
- PATH_LIST_BEGIN
- //list path definitions here;
- PATH_ADD("/json", Get);
- PATH_LIST_END
-};
-
-/// The source file
-#include "JsonCtrl.h"
-void JsonCtrl::asyncHandleHttpRequest(const HttpRequestPtr &req,
- std::function &&callback)
-{
- Json::Value ret;
- ret["message"] = "Hello, World!";
- auto resp = HttpResponse::newHttpJsonResponse(ret);
- callback(resp);
-}
-```
-
-让我们更进一步,通过HttpController类创建一个RESTful API的例子,如下所示(忽略了实现文件):
-
-```c++
-/// The header file
-#pragma once
-#include
-using namespace drogon;
-namespace api
-{
-namespace v1
-{
-class User : public drogon::HttpController
-{
- public:
- METHOD_LIST_BEGIN
- //use METHOD_ADD to add your custom processing function here;
- METHOD_ADD(User::getInfo, "/{id}", Get); //path is /api/v1/User/{arg1}
- METHOD_ADD(User::getDetailInfo, "/{id}/detailinfo", Get); //path is /api/v1/User/{arg1}/detailinfo
- METHOD_ADD(User::newUser, "/{name}", Post); //path is /api/v1/User/{arg1}
- METHOD_LIST_END
- //your declaration of processing function maybe like this:
- void getInfo(const HttpRequestPtr &req, std::function &&callback, int userId) const;
- void getDetailInfo(const HttpRequestPtr &req, std::function &&callback, int userId) const;
- void newUser(const HttpRequestPtr &req, std::function &&callback, std::string &&userName);
- public:
- User()
- {
- LOG_DEBUG << "User constructor!";
- }
-};
-} // namespace v1
-} // namespace api
-```
-
-如你所见,通过`HttpController`类,用户可以同时映射路径和路径参数,这对RESTful API应用来说非常方便。
-
-另外,你可以发现前面所有的处理函数接口都是异步的,处理器的响应是通过回调对象返回的。这种设计是出于对高性能的考虑,因为在异步模式下,可以使用少量的线程(比如和处理器核心数相等的线程)处理大量的并发请求。
-
-编译上述的所有源文件后,我们得到了一个非常简单的web应用程序,这是一个不错的开始。**请访问[wiki](https://github.com/an-tao/drogon/wiki/CHN-01-概述)**
-
-## 贡献方式
-
-欢迎您的贡献。 请阅读[贡献指南](CONTRIBUTING.md)以获取更多的信息。
-
-
-
-## QQ交流群:1137909452
-
-欢迎交流探讨。
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/README.zh-TW.md b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/README.zh-TW.md
deleted file mode 100644
index b0eb982aaf2a..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/README.zh-TW.md
+++ /dev/null
@@ -1,198 +0,0 @@
-![](https://github.com/an-tao/drogon/wiki/images/drogon-white.jpg)
-
-[![Build Status](https://github.com/an-tao/drogon/workflows/Build%20Drogon/badge.svg?branch=master)](https://github.com/drogonframework/drogon/actions)
-[![Join the chat at https://gitter.im/drogon-web/community](https://badges.gitter.im/drogon-web/community.svg)](https://gitter.im/drogon-web/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-[![Join the telegram group at https://t.me/joinchat/_mMNGv0748ZkMDAx](https://img.shields.io/badge/Telegram-2CA5E0?style=flat&logo=telegram&logoColor=white)](https://t.me/joinchat/_mMNGv0748ZkMDAx)
-[![Docker image](https://img.shields.io/badge/Docker-image-blue.svg)](https://cloud.docker.com/u/drogonframework/repository/docker/drogonframework/drogon)
-
-[English](./README.md) | [简体中文](./README.zh-CN.md) | 繁體中文
-
-**Drogon**是一個基於C++14/17的Http應用框架,使用Drogon可以方便的使用C++構建各種類型的Web App伺服器程式。
-本版本庫是github上[Drogon](https://github.com/an-tao/drogon)的鏡像庫。 **Drogon**是作者非常喜歡的美劇《冰與火之歌:權力遊戲》中的一條龍的名字(漢譯作卓耿),和龍有關但並不是dragon的誤寫,為了不至於引起不必要的誤會這裡說明一下。
-
-Drogon是一個跨平台框架,它支援Linux,也支援macOS、FreeBSD/OpenBSD、HaikuOS和Windows。它的主要特點如下:
-
-* 網路層使用基於epoll(macOS/FreeBSD下是kqueue)的非阻塞IO框架,提供高並發、高性能的網路IO。詳細請見[TFB Tests Results](https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=composite);
-* 全異步程式設計;
-* 支援Http1.0/1.1(server端和client端);
-* 基於模板(template)實現了簡單的反射機制,使主程式框架、控制器(controller)和視圖(view)完全去耦;
-* 支援cookies和內建的session;
-* 支援後端渲染,把控制器生成的數據交給視圖生成Html頁面,視圖由CSP模板文件描述,通過CSP標籤把C++程式碼嵌入到Html頁面,由drogon的指令列工具在編譯階段自動生成C++程式碼並編譯;
-* 支援運行期的視圖頁面動態加載(動態編譯和載入so文件);
-* 非常方便靈活的路徑(path)到控制器處理函數(handler)的映射方案;
-* 支援過濾器(filter)鏈,方便在控制器之前執行統一的邏輯(如登錄驗證、Http Method約束驗證等);
-* 支援https(基於OpenSSL);
-* 支援websocket(server端和client端);
-* 支援Json格式的請求和回應, 方便開發Restful API;
-* 支援文件下載和上傳,支援sendfile系統呼叫;
-* 支援gzip/brotli壓縮傳輸;
-* 支援pipelining;
-* 提供一個輕量的指令列工具drogon_ctl,幫助簡化各種類的創造和視圖程式碼的生成過程;
-* 非同步的讀寫資料庫,目前支援PostgreSQL和MySQL(MariaDB)資料庫;
-* 支援異步讀寫Redis;
-* 基於執行序池實現sqlite3資料庫的異步讀寫,提供與上文資料庫相同的接口;
-* 支援ARM架構;
-* 方便的輕量級ORM實現,一般物件到資料庫的雙向映射;
-* 支援外掛,可通過設定文件在載入時動態載入;
-* 支援內建插入點的AOP
-* 支援C++ coroutine
-
-## 一個非常簡單的例子
-
-不像大多數C++框架那樣,drogon的主程式可以非常簡單。 Drogon使用了一些小技巧使主程式和控制器去耦. 控制器的路由設定可以在控制器類別中定義或者設定文件中完成.
-
-下面是一個典型的主程式的樣子:
-
-```c++
-#include
-using namespace drogon;
-int main()
-{
- app().setLogPath("./")
- .setLogLevel(trantor::Logger::kWarn)
- .addListener("0.0.0.0", 80)
- .setThreadNum(16)
- .enableRunAsDaemon()
- .run();
-}
-```
-
-如果使用設定文件,可以進一步簡化成這樣:
-
-```c++
-#include
-using namespace drogon;
-int main()
-{
- app().loadConfigFile("./config.json").run();
-}
-```
-
-當然,Drogon也提供了一些函數,使使用者可以在main()函數中直接添加控制器邏輯,比如,使用者可以註冊一個lambda處理器到drogon框架中,如下所示:
-
-```c++
-app().registerHandler("/test?username={name}",
- [](const HttpRequestPtr& req,
- std::function &&callback,
- const std::string &name)
- {
- Json::Value json;
- json["result"]="ok";
- json["message"]=std::string("hello,")+name;
- auto resp=HttpResponse::newHttpJsonResponse(json);
- callback(resp);
- },
- {Get,"LoginFilter"});
-```
-
-
-這看起來是很方便,但是這並不適用於復雜的場景,試想假如有數十個或者數百個處理函數要註冊進框架,main()函數將膨脹到不可讀的程度。顯然,讓每個包含處理函數的類在自己的定義中完成註冊是更好的選擇。所以,除非你的應用邏輯非常簡單,我們不推薦使用上述接口,更好的實踐是,我們可以創造一個HttpSimpleController類別,如下:
-
-
-```c++
-/// The TestCtrl.h file
-#pragma once
-#include
-using namespace drogon;
-class TestCtrl:public drogon::HttpSimpleController
-{
-public:
- void asyncHandleHttpRequest(const HttpRequestPtr& req, std::function &&callback) override;
- PATH_LIST_BEGIN
- PATH_ADD("/test",Get);
- PATH_LIST_END
-};
-
-/// The TestCtrl.cc file
-#include "TestCtrl.h"
-void TestCtrl::asyncHandleHttpRequest(const HttpRequestPtr& req,
- std::function &&callback)
-{
- //write your application logic here
- auto resp = HttpResponse::newHttpResponse();
- resp->setBody("Hello, world!
");
- resp->setExpiredTime(0);
- callback(resp);
-}
-```
-
-**上面程式的大部分程式碼都可以由`drogon_ctl`指令創造**(這個指令是`drogon_ctl create controller TestCtr`)。使用者所需做的就是添加自己的業務邏輯。在這個例子中,當客戶端訪問URL`http://ip/test`時,控制器簡單的回傳了一個`Hello, world!`頁面。
-
-對於JSON格式的回應,我們可以像下面這樣創造控制器:
-
-```c++
-/// The header file
-#pragma once
-#include
-using namespace drogon;
-class JsonCtrl : public drogon::HttpSimpleController
-{
- public:
- void asyncHandleHttpRequest(const HttpRequestPtr &req, std::function &&callback) override;
- PATH_LIST_BEGIN
- //list path definitions here;
- PATH_ADD("/json", Get);
- PATH_LIST_END
-};
-
-/// The source file
-#include "JsonCtrl.h"
-void JsonCtrl::asyncHandleHttpRequest(const HttpRequestPtr &req,
- std::function &&callback)
-{
- Json::Value ret;
- ret["message"] = "Hello, World!";
- auto resp = HttpResponse::newHttpJsonResponse(ret);
- callback(resp);
-}
-```
-
-讓我們更進一步,通過HttpController類別創造一個RESTful API的例子,如下所示(忽略了實做文件):
-
-```c++
-/// The header file
-#pragma once
-#include
-using namespace drogon;
-namespace api
-{
-namespace v1
-{
-class User : public drogon::HttpController
-{
- public:
- METHOD_LIST_BEGIN
- //use METHOD_ADD to add your custom processing function here;
- METHOD_ADD(User::getInfo, "/{id}", Get); //path is /api/v1/User/{arg1}
- METHOD_ADD(User::getDetailInfo, "/{id}/detailinfo", Get); //path is /api/v1/User/{arg1}/detailinfo
- METHOD_ADD(User::newUser, "/{name}", Post); //path is /api/v1/User/{arg1}
- METHOD_LIST_END
- //your declaration of processing function maybe like this:
- void getInfo(const HttpRequestPtr &req, std::function &&callback, int userId) const;
- void getDetailInfo(const HttpRequestPtr &req, std::function &&callback, int userId) const;
- void newUser(const HttpRequestPtr &req, std::function &&callback, std::string &&userName);
- public:
- User()
- {
- LOG_DEBUG << "User constructor!";
- }
-};
-} // namespace v1
-} // namespace api
-```
-
-如你所見,通過`HttpController`類別,使用者可以同時映射路徑和路徑參數,這對RESTful API應用來說非常方便。
-
-另外,你可以發現前面所有的處理函數接口都是異步的,處理器的回應是通過回調對象回傳的。這種設計是出於對高性能的考慮,因為在異步模式下,可以使用少量的執行序(比如和處理器核心數相等的執行序)處理大量的並發請求。
-
-編譯上述的所有源文件後,我們得到了一個非常簡單的web應用程式,這是一個不錯的開始。 **請瀏覽[wiki](https://github.com/an-tao/drogon/wiki/CHN-01-概述)**
-
-## 貢獻方式
-
-歡迎您的貢獻。請閱讀[貢獻指南](CONTRIBUTING.md)以獲取更多的信息。
-
-
-
-## QQ交流群:1137909452
-
-歡迎交流探討。
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/build.sh b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/build.sh
deleted file mode 100755
index 779ff57de0a4..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/build.sh
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/usr/bin/env bash
-
-#build drogon
-function build_drogon() {
-
- #Update the submodule and initialize
- git submodule update --init
-
- #Remove the config.h generated by the old version of drogon.
- rm -f lib/inc/drogon/config.h
-
- #Save current directory
- current_dir="${PWD}"
-
- #The folder in which we will build drogon
- build_dir='./build'
- if [ -d $build_dir ]; then
- echo "Deleted folder: ${build_dir}"
- rm -rf $build_dir
- fi
-
- #Create building folder
- echo "Created building folder: ${build_dir}"
- mkdir $build_dir
-
- echo "Entering folder: ${build_dir}"
- cd $build_dir
-
- echo "Start building drogon ..."
- if [ $1 -eq 1 ]; then
- cmake .. -DBUILD_TESTING=YES $cmake_gen
- elif [ $1 -eq 2 ]; then
- cmake .. -DBUILD_TESTING=YES -DBUILD_SHARED_LIBS=ON -DCMAKE_CXX_VISIBILITY_PRESET=hidden -DCMAKE_VISIBILITY_INLINES_HIDDEN=1 $cmake_gen
- else
- cmake .. -DCMAKE_BUILD_TYPE=release $cmake_gen
- fi
-
- #If errors then exit
- if [ "$?" != "0" ]; then
- exit -1
- fi
-
- $make_program $make_flags
-
- #If errors then exit
- if [ "$?" != "0" ]; then
- exit -1
- fi
-
- echo "Installing ..."
- $make_program install
-
- #Go back to the current directory
- cd $current_dir
- #Ok!
-}
-
-make_program=make
-make_flags=''
-cmake_gen=''
-parallel=1
-
-case $(uname) in
- FreeBSD)
- nproc=$(sysctl -n hw.ncpu)
- ;;
- Darwin)
- nproc=$(sysctl -n hw.ncpu) # sysctl -n hw.ncpu is the equivalent to nproc on macOS.
- ;;
- *)
- nproc=$(nproc)
- ;;
-esac
-
-# simulate ninja's parallelism
-case nproc in
- 1)
- parallel=$(( nproc + 1 ))
- ;;
- 2)
- parallel=$(( nproc + 1 ))
- ;;
- *)
- parallel=$(( nproc + 2 ))
- ;;
-esac
-
-if [ -f /bin/ninja ]; then
- make_program=ninja
- cmake_gen='-GNinja'
-else
- make_flags="$make_flags -j$parallel"
-fi
-
-if [ "X$1" = "X-t" ]; then
- build_drogon 1
-elif [ "X$1" = "X-tshared" ]; then
- build_drogon 2
-else
- build_drogon 0
-fi
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/DrogonUtilities.cmake b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/DrogonUtilities.cmake
deleted file mode 100644
index 7cb979968ae8..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/DrogonUtilities.cmake
+++ /dev/null
@@ -1,72 +0,0 @@
-# ##############################################################################
-# function drogon_create_views(target source_path output_path
-# [TRUE to use_path_as_namespace] [prefixed namespace])
-# ##############################################################################
-function(drogon_create_views arg)
- if(ARGC LESS 3)
- message(STATUS "arguments error when calling drogon_create_views")
- return()
- endif()
- file(MAKE_DIRECTORY ${ARGV2})
- file(GLOB_RECURSE SCP_LIST ${ARGV1}/*.csp)
- foreach(cspFile ${SCP_LIST})
- file(RELATIVE_PATH
- inFile
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${cspFile})
- if(ARGC GREATER 3 AND ARGV3)
- string(REPLACE "/"
- "_"
- f1
- ${inFile})
- string(REPLACE "\\"
- "_"
- f2
- ${f1})
- string(REPLACE ".csp"
- ""
- outputFile
- ${f2})
- set(p2ns "")
- if("${ARGV3}" STREQUAL "TRUE")
- set(p2ns "--path-to-namespace")
- endif()
- if ( (ARGC EQUAL 5) AND ( NOT "${ARGV4}" STREQUAL "") )
- string(REPLACE "::" "_" nSpace ${ARGV4})
- set(outputFile "${nSpace}_${outputFile}")
- set(ns -n ${ARGV4})
- else()
- set(ns "")
- endif()
- add_custom_command(OUTPUT ${ARGV2}/${outputFile}.h ${ARGV2}/${outputFile}.cc
- COMMAND drogon_ctl
- ARGS
- create
- view
- ${inFile}
- ${p2ns}
- -o
- ${ARGV2}
- ${ns}
- DEPENDS ${cspFile}
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- VERBATIM)
- set(VIEWSRC ${VIEWSRC} ${ARGV2}/${outputFile}.cc)
- else()
- get_filename_component(classname ${cspFile} NAME_WE)
- add_custom_command(OUTPUT ${ARGV2}/${classname}.h ${ARGV2}/${classname}.cc
- COMMAND drogon_ctl
- ARGS
- create
- view
- ${inFile}
- -o
- ${ARGV2}
- DEPENDS ${cspFile}
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- VERBATIM)
- set(VIEWSRC ${VIEWSRC} ${ARGV2}/${classname}.cc)
- endif()
- endforeach()
- target_sources(${ARGV0} PRIVATE ${VIEWSRC})
-endfunction(drogon_create_views)
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/Packages.cmake b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/Packages.cmake
deleted file mode 100644
index e85db3832948..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/Packages.cmake
+++ /dev/null
@@ -1,37 +0,0 @@
-include(GNUInstallDirs)
-
-set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
-set(CPACK_PACKAGE_CONTACT "https://github.com/drogonframework/drogon")
-
-set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
-set(CPACK_PACKAGE_VERSION "${DROGON_VERSION}")
-set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A C++14/17 based HTTP web application framework running on Linux/macOS/Unix/Windows")
-
-# DEB
-# Figure out dependencies automatically.
-set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
-
-# Should be set automatically, but it is not.
-execute_process(COMMAND dpkg --print-architecture
- OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE
- OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-# The default does not produce valid Debian package names.
-set(CPACK_DEBIAN_FILE_NAME
- "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}-0_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb")
-
-# RPM
-set(CPACK_RPM_PACKAGE_LICENSE "MIT")
-
-# Figure out dependencies automatically.
-set(CPACK_RPM_PACKAGE_AUTOREQ ON)
-
-# Should be set automatically, but it is not.
-execute_process(COMMAND uname -m
- OUTPUT_VARIABLE CPACK_RPM_PACKAGE_ARCHITECTURE
- OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-set(CPACK_PACKAGE_FILE_NAME
- "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-0.${CPACK_RPM_PACKAGE_ARCHITECTURE}")
-
-include(CPack)
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/ParseAndAddDrogonTests.cmake b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/ParseAndAddDrogonTests.cmake
deleted file mode 100644
index 34d9129708b8..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/ParseAndAddDrogonTests.cmake
+++ /dev/null
@@ -1,79 +0,0 @@
-#==================================================================================================#
-# Adapted and re-written from Catch2 to work with Drogon Test #
-# #
-# Usage #
-# 1. make sure this module is in the path or add this otherwise: #
-# set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake_modules/") #
-# 2. make sure that you've enabled testing option for the project by the call: #
-# enable_testing() #
-# 3. add the lines to the script for testing target (sample CMakeLists.txt): #
-# project(testing_target) #
-# enable_testing() #
-# #
-# file(GLOB SOURCE_FILES "*.cpp") #
-# add_executable(${PROJECT_NAME} ${SOURCE_FILES}) #
-# #
-# include(ParseAndAddDrogonTests) #
-# ParseAndAddDrogonTests(${PROJECT_NAME}) #
-#==================================================================================================#
-
-cmake_minimum_required(VERSION 3.5)
-
-# This removes the contents between
-# - block comments (i.e. /* ... */)
-# - full line comments (i.e. // ... )
-# contents have been read into '${CppCode}'.
-# !keep partial line comments
-function(RemoveComments CppCode)
- string(ASCII 2 CMakeBeginBlockComment)
- string(ASCII 3 CMakeEndBlockComment)
- string(REGEX REPLACE "/\\*" "${CMakeBeginBlockComment}" ${CppCode} "${${CppCode}}")
- string(REGEX REPLACE "\\*/" "${CMakeEndBlockComment}" ${CppCode} "${${CppCode}}")
- string(REGEX REPLACE "${CMakeBeginBlockComment}[^${CMakeEndBlockComment}]*${CMakeEndBlockComment}" "" ${CppCode} "${${CppCode}}")
- string(REGEX REPLACE "\n[ \t]*//+[^\n]+" "\n" ${CppCode} "${${CppCode}}")
-
- set(${CppCode} "${${CppCode}}" PARENT_SCOPE)
-endfunction()
-
-# Worker function
-function(ParseFile SourceFile TestTarget)
- set(FullSourcePath ${CMAKE_CURRENT_SOURCE_DIR}/${SourceFile})
- if(NOT EXISTS ${FullSourcePath})
- return()
- endif()
- file(STRINGS ${FullSourcePath} Contents NEWLINE_CONSUME)
-
- # Remove block and fullline comments
- RemoveComments(Contents)
-
- # Find definition of test names
- string(REGEX MATCHALL "[ \t]*DROGON_TEST[ \t]*\\\([a-zA-Z0-9_]+\\\)" Tests "${Contents}")
-
- foreach(TestLine ${Tests})
- # Strip newlines
- string(REGEX REPLACE "\\\\\n|\n" "" TestLine "${TestLine}")
-
- # Get the name of the test
- string(REGEX REPLACE "[ \t]*DROGON_TEST[ \t]*" "" TestLine "${TestLine}")
- string(REGEX MATCHALL "[a-zA-Z0-9_]+" TestName "${TestLine}")
-
- # Validate that a test name and tags have been provided
- list(LENGTH TestName TestNameLength)
- if(NOT TestNameLength EQUAL 1)
- message(FATAL_ERROR "${TestName} in ${SourceFile} is not a valid test name."
- " Either a bug in the Drogon Test CMake parser or a bug in the test itself")
- endif()
-
- # Add the test and set its properties
- add_test(NAME "${TestName}" COMMAND ${TestTarget} -r ${TestName} ${AdditionalCatchParameters})
-
- endforeach()
-endfunction()
-
-# entry point
-function(ParseAndAddDrogonTests TestTarget)
- get_target_property(SourceFiles ${TestTarget} SOURCES)
- foreach(SourceFile ${SourceFiles})
- ParseFile(${SourceFile} ${TestTarget})
- endforeach()
-endfunction()
\ No newline at end of file
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/templates/DrogonConfig.cmake.in b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/templates/DrogonConfig.cmake.in
deleted file mode 100644
index 171d90182d04..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/templates/DrogonConfig.cmake.in
+++ /dev/null
@@ -1,66 +0,0 @@
-# - Config file for the Drogon package
-# It defines the following variables
-# DROGON_INCLUDE_DIRS - include directories for Drogon
-# DROGON_LIBRARIES - libraries to link against
-# DROGON_EXECUTABLE - the drogon_ctl executable
-# Drogon_FOUND
-# This module defines the following IMPORTED target:
-# Drogon::Drogon
-
-@PACKAGE_INIT@
-
-include(CMakeFindDependencyMacro)
-list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
-
-find_dependency(Jsoncpp REQUIRED)
-find_dependency(Trantor REQUIRED)
-if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD" AND NOT WIN32)
-find_dependency(UUID REQUIRED)
-endif(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD" AND NOT WIN32)
-find_dependency(ZLIB REQUIRED)
-if(@pg_FOUND@)
-find_dependency(pg)
-endif()
-if(@SQLite3_FOUND@)
-find_dependency(SQLite3)
-endif()
-if(@MySQL_FOUND@)
-find_dependency(MySQL)
-endif()
-if(@Boost_FOUND@)
-find_dependency(Boost)
-find_package(Boost COMPONENTS filesystem system)
-endif()
-if(@Brotli_FOUND@)
-find_dependency(Brotli)
-endif()
-if(@COZ-PROFILER_FOUND@)
-find_dependency(coz-profiler)
-endif()
-if(@Hiredis_FOUND@)
-find_dependency(Hiredis)
-endif()
-if(@yaml-cpp_FOUND@)
-find_dependency(yaml-cpp)
-endif()
-if(@BUILD_SHARED_LIBS@)
-find_dependency(Threads)
-endif()
-if(@HAS_STD_FILESYSTEM_PATH@)
-find_dependency(Filesystem)
-find_package(Filesystem COMPONENTS Final REQUIRED)
-endif()
-
-
-# Our library dependencies (contains definitions for IMPORTED targets)
-
-get_filename_component(DROGON_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
-if(NOT TARGET Drogon::Drogon)
- include("${DROGON_CMAKE_DIR}/DrogonTargets.cmake")
- include("${DROGON_CMAKE_DIR}/DrogonUtilities.cmake")
- include("${DROGON_CMAKE_DIR}/ParseAndAddDrogonTests.cmake")
-endif()
-
-get_target_property(DROGON_INCLUDE_DIRS Drogon::Drogon INTERFACE_INCLUDE_DIRECTORIES)
-set(DROGON_LIBRARIES Drogon::Drogon)
-set(DROGON_EXECUTABLE drogon_ctl)
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/templates/config.h.in b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/templates/config.h.in
deleted file mode 100644
index d33f2478dac4..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/templates/config.h.in
+++ /dev/null
@@ -1,15 +0,0 @@
-#pragma once
-
-#cmakedefine01 USE_POSTGRESQL
-#cmakedefine01 LIBPQ_SUPPORTS_BATCH_MODE
-#cmakedefine01 USE_MYSQL
-#cmakedefine01 USE_SQLITE3
-#cmakedefine01 HAS_STD_FILESYSTEM_PATH
-#cmakedefine OpenSSL_FOUND
-#cmakedefine Boost_FOUND
-
-#cmakedefine COMPILATION_FLAGS "@COMPILATION_FLAGS@@DROGON_CXX_STANDARD@"
-#cmakedefine COMPILER_COMMAND "@COMPILER_COMMAND@"
-#cmakedefine COMPILER_ID "@COMPILER_ID@"
-
-#cmakedefine INCLUDING_DIRS "@INCLUDING_DIRS@"
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/templates/version.h.in b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/templates/version.h.in
deleted file mode 100644
index 4542ba00a729..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/templates/version.h.in
+++ /dev/null
@@ -1,5 +0,0 @@
-#define MAJOR @DROGON_MAJOR_VERSION@
-#define MINOR @DROGON_MINOR_VERSION@
-#define PATCH @DROGON_PATCH_VERSION@
-#define DROGON_VERSION "@DROGON_VERSION_STRING@"
-#define DROGON_VERSION_SHA1 "@GIT_SHA1@"
\ No newline at end of file
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/tests/check_has_std_filesystem_path.cc b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/tests/check_has_std_filesystem_path.cc
deleted file mode 100755
index 1b368c3324a7..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/tests/check_has_std_filesystem_path.cc
+++ /dev/null
@@ -1,7 +0,0 @@
-#include
-
-int main()
-{
- std::filesystem::path aPath("../");
- return 0;
-}
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/tests/normal_uuid_lib_test.cc b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/tests/normal_uuid_lib_test.cc
deleted file mode 100644
index 4e535a4f329a..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/tests/normal_uuid_lib_test.cc
+++ /dev/null
@@ -1,7 +0,0 @@
-#include
-int main()
-{
- uuid_t uu;
- uuid_generate(uu);
- return 0;
-}
\ No newline at end of file
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/tests/ossp_uuid_lib_test.cc b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/tests/ossp_uuid_lib_test.cc
deleted file mode 100644
index 0e251e5c22fd..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/tests/ossp_uuid_lib_test.cc
+++ /dev/null
@@ -1,8 +0,0 @@
-#include
-int main()
-{
- uuid_t *uuid;
- uuid_create(&uuid);
- uuid_make(uuid, UUID_MAKE_V1);
- return 0;
-}
\ No newline at end of file
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/tests/test_libpq_batch_mode.cc b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/tests/test_libpq_batch_mode.cc
deleted file mode 100644
index 69c1e11e6906..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake/tests/test_libpq_batch_mode.cc
+++ /dev/null
@@ -1,9 +0,0 @@
-#include
-
-int main()
-{
- PQenterPipelineMode(NULL);
- PQexitPipelineMode(NULL);
- PQpipelineSync(NULL);
- PQpipelineStatus(NULL);
-}
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindBrotli.cmake b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindBrotli.cmake
deleted file mode 100644
index da5b6d256241..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindBrotli.cmake
+++ /dev/null
@@ -1,50 +0,0 @@
-# ***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.
-#
-# This software is licensed as described in the file COPYING, which you should
-# have received as part of this distribution. The terms are also available at
-# https://curl.haxx.se/docs/copyright.html.
-#
-# You may opt to use, copy, modify, merge, publish, distribute and/or sell
-# copies of the Software, and permit persons to whom the Software is furnished
-# to do so, under the terms of the COPYING file.
-#
-# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-# KIND, either express or implied.
-#
-# ##############################################################################
-include(FindPackageHandleStandardArgs)
-
-find_path(BROTLI_INCLUDE_DIR "brotli/decode.h")
-
-find_library(BROTLICOMMON_LIBRARY NAMES brotlicommon brotlicommon-static)
-find_library(BROTLIDEC_LIBRARY NAMES brotlidec brotlidec-static)
-find_library(BROTLIENC_LIBRARY NAMES brotlienc brotlienc-static)
-
-find_package_handle_standard_args(Brotli
- REQUIRED_VARS
- BROTLIDEC_LIBRARY
- BROTLIENC_LIBRARY
- BROTLICOMMON_LIBRARY
- BROTLI_INCLUDE_DIR
- FAIL_MESSAGE
- "Could NOT find BROTLI")
-
-set(BROTLI_INCLUDE_DIRS ${BROTLI_INCLUDE_DIR})
-set(BROTLI_LIBRARIES ${BROTLIDEC_LIBRARY}
- ${BROTLIENC_LIBRARY} ${BROTLICOMMON_LIBRARY})
-
-if(Brotli_FOUND)
- add_library(Brotli_lib INTERFACE IMPORTED)
- set_target_properties(Brotli_lib
- PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
- "${BROTLI_INCLUDE_DIRS}"
- INTERFACE_LINK_LIBRARIES
- "${BROTLI_LIBRARIES}")
-endif(Brotli_FOUND)
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindFilesystem.cmake b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindFilesystem.cmake
deleted file mode 100644
index 3bec58722251..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindFilesystem.cmake
+++ /dev/null
@@ -1,261 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-
-FindFilesystem
-##############
-
-This module supports the C++17 standard library's filesystem utilities. Use the
-:imp-target:`std::filesystem` imported target to
-
-Options
-*******
-
-The ``COMPONENTS`` argument to this module supports the following values:
-
-.. find-component:: Experimental
- :name: fs.Experimental
-
- Allows the module to find the "experimental" Filesystem TS version of the
- Filesystem library. This is the library that should be used with the
- ``std::experimental::filesystem`` namespace.
-
-.. find-component:: Final
- :name: fs.Final
-
- Finds the final C++17 standard version of the filesystem library.
-
-If no components are provided, behaves as if the
-:find-component:`fs.Final` component was specified.
-
-If both :find-component:`fs.Experimental` and :find-component:`fs.Final` are
-provided, first looks for ``Final``, and falls back to ``Experimental`` in case
-of failure. If ``Final`` is found, :imp-target:`std::filesystem` and all
-:ref:`variables ` will refer to the ``Final`` version.
-
-
-Imported Targets
-****************
-
-.. imp-target:: std::filesystem
-
- The ``std::filesystem`` imported target is defined when any requested
- version of the C++ filesystem library has been found, whether it is
- *Experimental* or *Final*.
-
- If no version of the filesystem library is available, this target will not
- be defined.
-
- .. note::
- This target has ``cxx_std_17`` as an ``INTERFACE``
- :ref:`compile language standard feature `. Linking
- to this target will automatically enable C++17 if no later standard
- version is already required on the linking target.
-
-
-.. _fs.variables:
-
-Variables
-*********
-
-.. variable:: CXX_FILESYSTEM_IS_EXPERIMENTAL
-
- Set to ``TRUE`` when the :find-component:`fs.Experimental` version of C++
- filesystem library was found, otherwise ``FALSE``.
-
-.. variable:: CXX_FILESYSTEM_HAVE_FS
-
- Set to ``TRUE`` when a filesystem header was found.
-
-.. variable:: CXX_FILESYSTEM_HEADER
-
- Set to either ``filesystem`` or ``experimental/filesystem`` depending on
- whether :find-component:`fs.Final` or :find-component:`fs.Experimental` was
- found.
-
-.. variable:: CXX_FILESYSTEM_NAMESPACE
-
- Set to either ``std::filesystem`` or ``std::experimental::filesystem``
- depending on whether :find-component:`fs.Final` or
- :find-component:`fs.Experimental` was found.
-
-
-Examples
-********
-
-Using `find_package(Filesystem)` with no component arguments:
-
-.. code-block:: cmake
-
- find_package(Filesystem REQUIRED)
-
- add_executable(my-program main.cpp)
- target_link_libraries(my-program PRIVATE std::filesystem)
-
-
-#]=======================================================================]
-
-
-if(TARGET std::filesystem)
- # This module has already been processed. Don't do it again.
- return()
-endif()
-
-# Ignore fileystem check if version too low
-if(CMAKE_VERSION VERSION_LESS 3.10)
- set(CXX_FILESYSTEM_HAVE_FS FALSE CACHE BOOL "TRUE if we have the C++ filesystem headers")
- set(Filesystem_FOUND FALSE CACHE BOOL "TRUE if we can run a program using std::filesystem" FORCE)
- return()
-endif()
-
-cmake_minimum_required(VERSION 3.10)
-include(CMakePushCheckState)
-include(CheckIncludeFileCXX)
-
-# If we're not cross-compiling, try to run test executables.
-# Otherwise, assume that compile + link is a sufficient check.
-if(CMAKE_CROSSCOMPILING)
- include(CheckCXXSourceCompiles)
- macro(_cmcm_check_cxx_source code var)
- check_cxx_source_compiles("${code}" ${var})
- endmacro()
-else()
- include(CheckCXXSourceRuns)
- macro(_cmcm_check_cxx_source code var)
- check_cxx_source_runs("${code}" ${var})
- endmacro()
-endif()
-
-cmake_push_check_state()
-
-set(CMAKE_REQUIRED_QUIET ${Filesystem_FIND_QUIETLY})
-
-# All of our tests required C++17 or later
-set(BACKUP_CXX_STANDARD "${CMAKE_CXX_STANDARD}")
-set(CMAKE_CXX_STANDARD 17)
-
-# Normalize and check the component list we were given
-set(want_components ${Filesystem_FIND_COMPONENTS})
-if(Filesystem_FIND_COMPONENTS STREQUAL "")
- set(want_components Final)
-endif()
-
-# Warn on any unrecognized components
-set(extra_components ${want_components})
-list(REMOVE_ITEM extra_components Final Experimental)
-foreach(component IN LISTS extra_components)
- message(WARNING "Extraneous find_package component for Filesystem: ${component}")
-endforeach()
-
-# Detect which of Experimental and Final we should look for
-set(find_experimental TRUE)
-set(find_final TRUE)
-if(NOT "Final" IN_LIST want_components)
- set(find_final FALSE)
-endif()
-if(NOT "Experimental" IN_LIST want_components)
- set(find_experimental FALSE)
-endif()
-
-if(find_final)
- check_include_file_cxx("filesystem" _CXX_FILESYSTEM_HAVE_HEADER)
- mark_as_advanced(_CXX_FILESYSTEM_HAVE_HEADER)
- if(_CXX_FILESYSTEM_HAVE_HEADER)
- # We found the non-experimental header. Don't bother looking for the
- # experimental one.
- set(find_experimental FALSE)
- endif()
-else()
- set(_CXX_FILESYSTEM_HAVE_HEADER FALSE)
-endif()
-
-if(find_experimental)
- check_include_file_cxx("experimental/filesystem" _CXX_FILESYSTEM_HAVE_EXPERIMENTAL_HEADER)
- mark_as_advanced(_CXX_FILESYSTEM_HAVE_EXPERIMENTAL_HEADER)
-else()
- set(_CXX_FILESYSTEM_HAVE_EXPERIMENTAL_HEADER FALSE)
-endif()
-
-if(_CXX_FILESYSTEM_HAVE_HEADER)
- set(_have_fs TRUE)
- set(_fs_header filesystem)
- set(_fs_namespace std::filesystem)
- set(_is_experimental FALSE)
-elseif(_CXX_FILESYSTEM_HAVE_EXPERIMENTAL_HEADER)
- set(_have_fs TRUE)
- set(_fs_header experimental/filesystem)
- set(_fs_namespace std::experimental::filesystem)
- set(_is_experimental TRUE)
-else()
- set(_have_fs FALSE)
-endif()
-
-set(CXX_FILESYSTEM_HAVE_FS ${_have_fs} CACHE BOOL "TRUE if we have the C++ filesystem headers")
-set(CXX_FILESYSTEM_HEADER ${_fs_header} CACHE STRING "The header that should be included to obtain the filesystem APIs")
-set(CXX_FILESYSTEM_NAMESPACE ${_fs_namespace} CACHE STRING "The C++ namespace that contains the filesystem APIs")
-set(CXX_FILESYSTEM_IS_EXPERIMENTAL ${_is_experimental} CACHE BOOL "TRUE if the C++ filesystem library is the experimental version")
-
-set(_found FALSE)
-
-if(CXX_FILESYSTEM_HAVE_FS)
- # We have some filesystem library available. Do link checks
- string(CONFIGURE [[
- #include
- #include <@CXX_FILESYSTEM_HEADER@>
-
- int main() {
- auto cwd = @CXX_FILESYSTEM_NAMESPACE@::current_path();
- printf("%s", cwd.generic_string().c_str());
- return EXIT_SUCCESS;
- }
- ]] code @ONLY)
-
- # HACK: Needed to compile correctly on Yocto Linux
- if(CMAKE_CXX_COMPILER_ID STREQUAL "GCC" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang"
- OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
- set(CMAKE_REQUIRED_FLAGS ${prev_req_flags} -std=c++17)
- endif ()
- # Check a simple filesystem program without any linker flags
- _cmcm_check_cxx_source("${code}" CXX_FILESYSTEM_NO_LINK_NEEDED)
-
- set(can_link ${CXX_FILESYSTEM_NO_LINK_NEEDED})
-
- if(NOT CXX_FILESYSTEM_NO_LINK_NEEDED)
- set(prev_libraries ${CMAKE_REQUIRED_LIBRARIES})
- # Add the libstdc++ flag
- set(CMAKE_REQUIRED_LIBRARIES ${prev_libraries} -lstdc++fs)
- _cmcm_check_cxx_source("${code}" CXX_FILESYSTEM_STDCPPFS_NEEDED)
- set(can_link ${CXX_FILESYSTEM_STDCPPFS_NEEDED})
- if(NOT CXX_FILESYSTEM_STDCPPFS_NEEDED)
- # Try the libc++ flag
- set(CMAKE_REQUIRED_LIBRARIES ${prev_libraries} -lc++fs)
- _cmcm_check_cxx_source("${code}" CXX_FILESYSTEM_CPPFS_NEEDED)
- set(can_link ${CXX_FILESYSTEM_CPPFS_NEEDED})
- endif()
- endif()
-
- if(can_link)
- add_library(std::filesystem INTERFACE IMPORTED)
- set_property(TARGET std::filesystem APPEND PROPERTY INTERFACE_COMPILE_FEATURES cxx_std_17)
- set(_found TRUE)
-
- if(CXX_FILESYSTEM_NO_LINK_NEEDED)
- # Nothing to add...
- elseif(CXX_FILESYSTEM_STDCPPFS_NEEDED)
- set_property(TARGET std::filesystem APPEND PROPERTY INTERFACE_LINK_LIBRARIES -lstdc++fs)
- elseif(CXX_FILESYSTEM_CPPFS_NEEDED)
- set_property(TARGET std::filesystem APPEND PROPERTY INTERFACE_LINK_LIBRARIES -lc++fs)
- endif()
- endif()
-endif()
-
-cmake_pop_check_state()
-
-set(Filesystem_FOUND ${_found} CACHE BOOL "TRUE if we can run a program using std::filesystem" FORCE)
-
-if(Filesystem_FIND_REQUIRED AND NOT Filesystem_FOUND)
- message(FATAL_ERROR "Cannot run simple program using std::filesystem")
-endif()
-
-set(CMAKE_CXX_STANDARD "${BACKUP_CXX_STANDARD}")
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindHiredis.cmake b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindHiredis.cmake
deleted file mode 100644
index f3eb7caf55a4..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindHiredis.cmake
+++ /dev/null
@@ -1,41 +0,0 @@
-# Try to find hiredis
-# Once done, this will define
-#
-# HIREDIS_FOUND - system has hiredis
-# HIREDIS_INCLUDE_DIRS - hiredis include directories
-# HIREDIS_LIBRARIES - libraries need to use hiredis
-
-if (HIREDIS_INCLUDE_DIRS AND HIREDIS_LIBRARIES)
- set(HIREDIS_FIND_QUIETLY TRUE)
- set(Hiredis_FOUND TRUE)
-else ()
- find_path(
- HIREDIS_INCLUDE_DIR
- NAMES hiredis/hiredis.h
- HINTS ${HIREDIS_ROOT_DIR}
- PATH_SUFFIXES include)
-
- find_library(
- HIREDIS_LIBRARY
- NAMES hiredis
- HINTS ${HIREDIS_ROOT_DIR}
- PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR})
-
- set(HIREDIS_INCLUDE_DIRS ${HIREDIS_INCLUDE_DIR})
- set(HIREDIS_LIBRARIES ${HIREDIS_LIBRARY})
-
- include(FindPackageHandleStandardArgs)
- find_package_handle_standard_args(
- Hiredis DEFAULT_MSG HIREDIS_LIBRARY HIREDIS_INCLUDE_DIR)
-
- mark_as_advanced(HIREDIS_LIBRARY HIREDIS_INCLUDE_DIR)
-endif ()
-
-if(Hiredis_FOUND)
- add_library(Hiredis_lib INTERFACE IMPORTED)
- set_target_properties(Hiredis_lib
- PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
- "${HIREDIS_INCLUDE_DIRS}"
- INTERFACE_LINK_LIBRARIES
- "${HIREDIS_LIBRARIES}")
-endif(Hiredis_FOUND)
\ No newline at end of file
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindJsoncpp.cmake b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindJsoncpp.cmake
deleted file mode 100755
index d220e70c67b8..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindJsoncpp.cmake
+++ /dev/null
@@ -1,70 +0,0 @@
-# Find jsoncpp
-#
-# Find the jsoncpp includes and library
-#
-# if you nee to add a custom library search path, do it via via
-# CMAKE_PREFIX_PATH
-#
-# This module defines JSONCPP_INCLUDE_DIRS, where to find header, etc.
-# JSONCPP_LIBRARIES, the libraries needed to use jsoncpp. JSONCPP_FOUND, If
-# false, do not try to use jsoncpp.
-# Jsoncpp_lib - The imported target library.
-
-# only look in default directories
-find_path(JSONCPP_INCLUDE_DIRS
- NAMES json/json.h
- DOC "jsoncpp include dir"
- PATH_SUFFIXES jsoncpp)
-
-find_library(JSONCPP_LIBRARIES NAMES jsoncpp DOC "jsoncpp library")
-
-# debug library on windows same naming convention as in qt (appending debug
-# library with d) boost is using the same "hack" as us with "optimized" and
-# "debug" if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
-# find_library(JSONCPP_LIBRARIES_DEBUG NAMES jsoncppd DOC "jsoncpp debug
-# library") if("${JSONCPP_LIBRARIES_DEBUG}" STREQUAL "JSONCPP_LIBRARIES_DEBUG-
-# NOTFOUND") set(JSONCPP_LIBRARIES_DEBUG ${JSONCPP_LIBRARIES}) endif()
-
-# set(JSONCPP_LIBRARIES optimized ${JSONCPP_LIBRARIES} debug
-# ${JSONCPP_LIBRARIES_DEBUG})
-
-# endif()
-
-# handle the QUIETLY and REQUIRED arguments and set JSONCPP_FOUND to TRUE if all
-# listed variables are TRUE, hide their existence from configuration view
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(Jsoncpp
- DEFAULT_MSG
- JSONCPP_INCLUDE_DIRS
- JSONCPP_LIBRARIES)
-mark_as_advanced(JSONCPP_INCLUDE_DIRS JSONCPP_LIBRARIES)
-
-if(Jsoncpp_FOUND)
- if(NOT EXISTS ${JSONCPP_INCLUDE_DIRS}/json/version.h)
- message(FATAL_ERROR "Error: jsoncpp lib is too old.....stop")
- endif()
- if(NOT WIN32)
- exec_program(
- cat
- ARGS
- "${JSONCPP_INCLUDE_DIRS}/json/version.h |grep JSONCPP_VERSION_STRING|sed s'/.*define/define/'|awk '{printf $3}'|sed s'/\"//g'"
- OUTPUT_VARIABLE
- jsoncpp_ver)
- message(STATUS "jsoncpp verson:" ${jsoncpp_ver})
- if(jsoncpp_ver LESS 1.7)
- message(
- FATAL_ERROR
- "jsoncpp lib is too old, please get new version from https://github.com/open-source-parsers/jsoncpp"
- )
- endif(jsoncpp_ver LESS 1.7)
- endif()
- if (NOT TARGET Jsoncpp_lib)
- add_library(Jsoncpp_lib INTERFACE IMPORTED)
- endif()
- set_target_properties(Jsoncpp_lib
- PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
- "${JSONCPP_INCLUDE_DIRS}"
- INTERFACE_LINK_LIBRARIES
- "${JSONCPP_LIBRARIES}")
-
-endif(Jsoncpp_FOUND)
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindMySQL.cmake b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindMySQL.cmake
deleted file mode 100644
index 2494f594c2a1..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindMySQL.cmake
+++ /dev/null
@@ -1,122 +0,0 @@
-# --------------------------------------------------------
-# Copyright (C) 1995-2007 MySQL AB
-#
-# This program is free software; you can redistribute it and/or modify it under
-# the terms of version 2 of the GNU General Public License as published by the
-# Free Software Foundation.
-#
-# There are special exceptions to the terms and conditions of the GPL as it is
-# applied to this software. View the full text of the exception in file
-# LICENSE.exceptions in the top-level directory of this software distribution.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
-# Street, Fifth Floor, Boston, MA 02110-1301, USA
-#
-# The MySQL Connector/ODBC is licensed under the terms of the GPL, like most
-# MySQL Connectors. There are special exceptions to the terms and conditions of
-# the GPL as it is applied to this software, see the FLOSS License Exception
-# available on mysql.com.
-# MySQL_lib - The imported target library.
-
-# ##############################################################################
-
-# -------------- FIND MYSQL_INCLUDE_DIRS ------------------
-find_path(MYSQL_INCLUDE_DIRS
- NAMES mysql.h
- PATH_SUFFIXES mysql
- PATHS /usr/include/mysql
- /usr/local/include/mysql
- /usr/include/mariadb
- /usr/local/include/mariadb
- /opt/mysql/mysql/include
- /opt/mysql/mysql/include/mysql
- /opt/mysql/include
- /opt/local/include/mysql5
- /usr/local/mysql/include
- /usr/local/mysql/include/mysql
- /usr/local/mariadb/include
- /usr/local/mariadb/include/mariadb
- /opt/rh/rh-mariadb105/root/usr/include
- /opt/rh/rh-mariadb105/root/usr/include/mysql
- $ENV{ProgramFiles}/MySQL/*/include
- $ENV{SystemDrive}/MySQL/*/include)
-
-if(EXISTS "${MYSQL_INCLUDE_DIRS}/mysql.h")
-
-elseif(EXISTS "${MYSQL_INCLUDE_DIRS}/mysql/mysql.h")
- set(MYSQL_INCLUDE_DIRS ${MYSQL_INCLUDE_DIRS}/mysql)
-endif()
-
-# ----------------- FIND MYSQL_LIBRARIES_DIR -------------------
-if(WIN32)
- # Set lib path suffixes dist = for mysql binary distributions build = for
- # custom built tree
- if(CMAKE_BUILD_TYPE STREQUAL Debug)
- set(libsuffixDist debug)
- set(libsuffixBuild Debug)
- else(CMAKE_BUILD_TYPE STREQUAL Debug)
- set(libsuffixDist opt)
- set(libsuffixBuild Release)
- add_definitions(-DDBUG_OFF)
- endif(CMAKE_BUILD_TYPE STREQUAL Debug)
-
- find_library(MYSQL_LIBRARIES
- NAMES mariadbclient
- PATHS $ENV{MYSQL_DIR}/lib/${libsuffixDist}
- $ENV{MYSQL_DIR}/libmysql
- $ENV{MYSQL_DIR}/libmysql/${libsuffixBuild}
- $ENV{MYSQL_DIR}/client/${libsuffixBuild}
- $ENV{MYSQL_DIR}/libmysql/${libsuffixBuild}
- $ENV{ProgramFiles}/MySQL/*/lib/${libsuffixDist}
- $ENV{SystemDrive}/MySQL/*/lib/${libsuffixDist})
-else(WIN32)
- find_library(MYSQL_LIBRARIES
- NAMES mysqlclient_r mariadbclient
- PATHS /usr/lib/mysql
- /usr/lib/mariadb
- /usr/local/lib/mysql
- /usr/local/lib/mariadb
- /usr/local/mysql/lib
- /usr/local/mysql/lib/mysql
- /opt/local/mysql5/lib
- /opt/local/lib/mysql5/mysql
- /opt/mysql/mysql/lib/mysql
- /opt/mysql/lib/mysql
- /opt/rh/rh-mariadb105/root/usr/lib64)
-endif(WIN32)
-
-if(MYSQL_INCLUDE_DIRS AND MYSQL_LIBRARIES)
- message(STATUS "MySQL Include dir: ${MYSQL_INCLUDE_DIRS}")
- message(STATUS "MySQL client libraries: ${MYSQL_LIBRARIES}")
-elseif(MySQL_FIND_REQUIRED)
- message(
- FATAL_ERROR
- "Cannot find MySQL. Include dir: ${MYSQL_INCLUDE_DIRS} library dir: ${MYSQL_LIBRARIES_DIR}"
- )
-endif(MYSQL_INCLUDE_DIRS AND MYSQL_LIBRARIES)
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(MySQL
- DEFAULT_MSG
- MYSQL_LIBRARIES
- MYSQL_INCLUDE_DIRS)
-# Copy the results to the output variables.
-if(MySQL_FOUND)
- add_library(MySQL_lib INTERFACE IMPORTED)
- set_target_properties(MySQL_lib
- PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
- "${MYSQL_INCLUDE_DIRS}"
- INTERFACE_LINK_LIBRARIES
- "${MYSQL_LIBRARIES}")
-else(MySQL_FOUND)
- set(MYSQL_LIBRARIES)
- set(MYSQL_INCLUDE_DIRS)
-endif(MySQL_FOUND)
-
-mark_as_advanced(MYSQL_INCLUDE_DIRS MYSQL_LIBRARIES)
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindSQLite3.cmake b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindSQLite3.cmake
deleted file mode 100644
index 552439ffc887..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindSQLite3.cmake
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2007-2009 LuaDist. Created by Peter Kapec
-# Redistribution and use of this file is allowed according to the terms of the
-# MIT license. For details see the COPYRIGHT file distributed with LuaDist.
-# Note: Searching headers and libraries is very simple and is NOT as powerful as
-# scripts distributed with CMake, because LuaDist defines directories to search
-# for. Everyone is encouraged to contact the author with improvements. Maybe
-# this file becomes part of CMake distribution sometimes.
-
-# * Find sqlite3 Find the native SQLITE3 headers and libraries.
-#
-# SQLITE3_INCLUDE_DIRS - where to find sqlite3.h, etc.
-# SQLITE3_LIBRARIES - List of libraries when using sqlite.
-# SQLite3_FOUND - True if sqlite3 found.
-# SQLite3_lib - The imported target library.
-
-# Look for the header file.
-find_path(SQLITE3_INCLUDE_DIRS NAMES sqlite3.h)
-
-# Look for the library.
-find_library(SQLITE3_LIBRARIES NAMES sqlite3)
-
-# Handle the QUIETLY and REQUIRED arguments and set SQLite3_FOUND to TRUE if all
-# listed variables are TRUE.
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(SQLite3
- DEFAULT_MSG
- SQLITE3_LIBRARIES
- SQLITE3_INCLUDE_DIRS)
-
-# Copy the results to the output variables.
-if(SQLite3_FOUND)
- add_library(SQLite3_lib INTERFACE IMPORTED)
- set_target_properties(SQLite3_lib
- PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
- "${SQLITE3_INCLUDE_DIRS}"
- INTERFACE_LINK_LIBRARIES
- "${SQLITE3_LIBRARIES}")
-else(SQLite3_FOUND)
- set(SQLITE3_LIBRARIES)
- set(SQLITE3_INCLUDE_DIRS)
-endif(SQLite3_FOUND)
-
-mark_as_advanced(SQLITE3_INCLUDE_DIRS SQLITE3_LIBRARIES)
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindUUID.cmake b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindUUID.cmake
deleted file mode 100755
index b2eeb7b5ad94..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/FindUUID.cmake
+++ /dev/null
@@ -1,118 +0,0 @@
-# * Try to find UUID Once done this will define
-#
-# UUID_FOUND - system has UUID
-# UUID_INCLUDE_DIRS - the UUID include directory
-# UUID_LIBRARIES - Link these to use UUID UUID_DEFINITIONS - Compiler switches
-# required for using UUID
-#
-# Copyright (c) 2006 Andreas Schneider
-#
-# Redistribution and use is allowed according to the terms of the New BSD
-# license. For details see the accompanying COPYING-CMAKE-SCRIPTS file.
-#
-
-if(UUID_LIBRARIES AND UUID_INCLUDE_DIRS)
- # in cache already
- set(UUID_FOUND TRUE)
-else()
- find_path(
- UUID_INCLUDE_DIR
- NAMES uuid.h
- PATH_SUFFIXES uuid
- HINTS ${UUID_DIR}/include
- $ENV{UUID_DIR}/include
- $ENV{UUID_DIR}
- ${DELTA3D_EXT_DIR}/inc
- $ENV{DELTA_ROOT}/ext/inc
- $ENV{DELTA_ROOT}
- PATHS
- ~/Library/Frameworks
- /Library/Frameworks
- /usr/local/include
- /usr/include
- /usr/include/gdal
- /sw/include # Fink
- /opt/local/include # DarwinPorts
- /opt/csw/include # Blastwave
- /opt/include
- [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OSG_ROOT]/include
- /usr/freeware/include)
-
- find_library(UUID_LIBRARY
- NAMES uuid ossp-uuid
- HINTS ${UUID_DIR}/lib
- $ENV{UUID_DIR}/lib
- $ENV{UUID_DIR}
- ${DELTA3D_EXT_DIR}/lib
- $ENV{DELTA_ROOT}/ext/lib
- $ENV{DELTA_ROOT}
- $ENV{OSG_ROOT}/lib
- PATHS ~/Library/Frameworks
- /Library/Frameworks
- /usr/local/lib
- /usr/lib
- /sw/lib
- /opt/local/lib
- /opt/csw/lib
- /opt/lib
- /usr/freeware/lib64)
-
- find_library(UUID_LIBRARY_DEBUG
- NAMES uuidd
- HINTS ${UUID_DIR}/lib
- $ENV{UUID_DIR}/lib
- $ENV{UUID_DIR}
- ${DELTA3D_EXT_DIR}/lib
- $ENV{DELTA_ROOT}/ext/lib
- $ENV{DELTA_ROOT}
- $ENV{OSG_ROOT}/lib
- PATHS ~/Library/Frameworks
- /Library/Frameworks
- /usr/local/lib
- /usr/lib
- /sw/lib
- /opt/local/lib
- /opt/csw/lib
- /opt/lib
- /usr/freeware/lib64)
-
- if(NOT UUID_LIBRARY AND (BSD OR APPLE))
- set(UUID_LIBRARY "")
- endif()
-
- set(UUID_INCLUDE_DIRS ${UUID_INCLUDE_DIR})
- set(UUID_LIBRARIES ${UUID_LIBRARY})
-
- if(UUID_INCLUDE_DIRS)
- if((BSD OR APPLE) OR UUID_LIBRARIES)
- set(UUID_FOUND TRUE)
- endif()
- endif()
-
- if(UUID_FOUND)
- if(NOT UUID_FIND_QUIETLY)
- message(STATUS "Found UUID: ${UUID_LIBRARIES}")
- endif()
- else()
- if(UUID_FIND_REQUIRED)
- message(FATAL_ERROR "Could not find UUID")
- endif()
- endif()
-
- # show the UUID_INCLUDE_DIRS and UUID_LIBRARIES variables only in the advanced
- # view
- mark_as_advanced(UUID_INCLUDE_DIRS UUID_LIBRARIES)
-
-endif()
-
-if(UUID_FOUND)
- add_library(UUID_lib INTERFACE IMPORTED)
- set_target_properties(UUID_lib
- PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
- "${UUID_INCLUDE_DIRS}"
- INTERFACE_LINK_LIBRARIES
- "${UUID_LIBRARIES}")
-else()
- set(UUID_LIBRARIES)
- set(UUID_INCLUDE_DIRS)
-endif()
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/Findcoz-profiler.cmake b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/Findcoz-profiler.cmake
deleted file mode 100644
index 54f89b45b9a5..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/Findcoz-profiler.cmake
+++ /dev/null
@@ -1,23 +0,0 @@
-find_path(COZ_INCLUDE_DIRS NAMES coz.h)
-
-find_library(COZ_LIBRARIES NAMES coz PATH_SUFFIXES coz-profiler)
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(coz-profiler
- DEFAULT_MSG
- COZ_LIBRARIES
- COZ_INCLUDE_DIRS)
-
-if(COZ-PROFILER_FOUND)
- add_library(coz::coz INTERFACE IMPORTED)
- set_target_properties(coz::coz
- PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
- ${COZ_INCLUDE_DIRS}
- INTERFACE_LINK_LIBRARIES
- ${COZ_LIBRARIES})
-else(COZ-PROFILER_FOUND)
- set(COZ_LIBRARIES)
- set(COZ_INCLUDE_DIRS)
-endif(COZ-PROFILER_FOUND)
-
-mark_as_advanced(COZ_INCLUDE_DIRS COZ_LIBRARIES)
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/Findpg.cmake b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/Findpg.cmake
deleted file mode 100644
index 53037f2bed18..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/cmake_modules/Findpg.cmake
+++ /dev/null
@@ -1,27 +0,0 @@
-# Find PostgreSQL
-#
-# Find the PostgreSQL includes and library
-#
-# This module defines PG_INCLUDE_DIRS, where to find header, etc. PG_LIBRARIES,
-# the libraries needed to use PostgreSQL. pg_FOUND, If false, do not try to use
-# PostgreSQL.
-# pg_lib - The imported target library.
-
-find_package(PostgreSQL)
-if(PostgreSQL_FOUND)
- set(PG_LIBRARIES ${PostgreSQL_LIBRARIES})
- set(PG_INCLUDE_DIRS ${PostgreSQL_INCLUDE_DIRS})
- message(STATUS "pg inc: " ${PostgreSQL_INCLUDE_DIRS})
- add_library(pg_lib INTERFACE IMPORTED)
- set_target_properties(pg_lib
- PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
- "${PostgreSQL_INCLUDE_DIRS}"
- INTERFACE_LINK_LIBRARIES
- "${PostgreSQL_LIBRARIES}")
- mark_as_advanced(PG_INCLUDE_DIRS PG_LIBRARIES)
-endif(PostgreSQL_FOUND)
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(pg
- DEFAULT_MSG
- PG_LIBRARIES
- PG_INCLUDE_DIRS)
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/conanfile.txt b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/conanfile.txt
deleted file mode 100644
index ca6b493669c4..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/conanfile.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-[requires]
-jsoncpp/1.9.4
-zlib/1.2.11
-gtest/1.10.0
-sqlite3/3.40.1
-#libpq/13.2
-openssl/1.1.1t
-hiredis/1.0.0
-brotli/1.0.9
-
-[generators]
-CMakeToolchain
-
-[options]
-
-[imports]
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/config.example.json b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/config.example.json
deleted file mode 100644
index 85e902b60136..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/config.example.json
+++ /dev/null
@@ -1,334 +0,0 @@
-/* This is a JSON format configuration file
- */
-{
- /*
- //ssl:The global SSL settings. "key" and "cert" are the path to the SSL key and certificate. While
- // "conf" is an array of 1 or 2-element tuples that supplies file style options for `SSL_CONF_cmd`.
- "ssl": {
- "cert": "../../trantor/trantor/tests/server.crt",
- "key": "../../trantor/trantor/tests/server.key",
- "conf": [
- //["Options", "-SessionTicket"],
- //["Options", "Compression"]
- ]
- },
- "listeners": [
- {
- //address: Ip address,0.0.0.0 by default
- "address": "0.0.0.0",
- //port: Port number
- "port": 80,
- //https: If true, use https for security,false by default
- "https": false
- },
- {
- "address": "0.0.0.0",
- "port": 443,
- "https": true,
- //cert,key: Cert file path and key file path, empty by default,
- //if empty, use the global setting
- "cert": "",
- "key": "",
- //use_old_tls: enable the TLS1.0/1.1, false by default
- "use_old_tls": false,
- "ssl_conf": [
- //["MinProtocol", "TLSv1.3"]
- ]
- }
- ],
- "db_clients": [
- {
- //name: Name of the client,'default' by default
- //"name":"",
- //rdbms: Server type, postgresql,mysql or sqlite3, "postgresql" by default
- "rdbms": "postgresql",
- //filename: Sqlite3 db file name
- //"filename":"",
- //host: Server address,localhost by default
- "host": "127.0.0.1",
- //port: Server port, 5432 by default
- "port": 5432,
- //dbname: Database name
- "dbname": "test",
- //user: 'postgres' by default
- "user": "",
- //passwd: '' by default
- "passwd": "",
- //is_fast: false by default, if it is true, the client is faster but user can't call
- //any synchronous interface of it.
- "is_fast": false,
- //client_encoding: The character set used by the client. it is empty string by default which
- //means use the default character set.
- //"client_encoding": "",
- //number_of_connections: 1 by default, if the 'is_fast' is true, the number is the number of
- //connections per IO thread, otherwise it is the total number of all connections.
- "number_of_connections": 1,
- //timeout: -1.0 by default, in seconds, the timeout for executing a SQL query.
- //zero or negative value means no timeout.
- "timeout": -1.0,
- //"auto_batch": this feature is only available for the PostgreSQL driver(version >= 14.0), see
- // the wiki for more details.
- "auto_batch": false
- }
- ],
- "redis_clients": [
- {
- //name: Name of the client,'default' by default
- //"name":"",
- //host: Server IP, 127.0.0.1 by default
- "host": "127.0.0.1",
- //port: Server port, 6379 by default
- "port": 6379,
- //username: '' by default which means 'default' in redis ACL
- "username": "",
- //passwd: '' by default
- "passwd": "",
- //db index: 0 by default
- "db": 0,
- //is_fast: false by default, if it is true, the client is faster but user can't call
- //any synchronous interface of it.
- "is_fast": false,
- //number_of_connections: 1 by default, if the 'is_fast' is true, the number is the number of
- //connections per IO thread, otherwise it is the total number of all connections.
- "number_of_connections": 1,
- //timeout: -1.0 by default, in seconds, the timeout for executing a command.
- //zero or negative value means no timeout.
- "timeout": -1.0
- }
- ],*/
- "app": {
- //number_of_threads: The number of IO threads, 1 by default, if the value is set to 0, the number of threads
- //is the number of CPU cores
- "number_of_threads": 1,
- //enable_session: False by default
- "enable_session": true,
- "session_timeout": 0,
- //string value of SameSite attribute of the Set-Cookie HTTP respone header
- //valid value is either 'Null' (default), 'Lax', 'Strict' or 'None'
- "session_same_site" : "Null",
- //document_root: Root path of HTTP document, defaut path is ./
- "document_root": "./",
- //home_page: Set the HTML file of the home page, the default value is "index.html"
- //If there isn't any handler registered to the path "/", the home page file in the "document_root" is send to clients as a response
- //to the request for "/".
- "home_page": "index.html",
- //use_implicit_page: enable implicit pages if true, true by default
- "use_implicit_page": true,
- //implicit_page: Set the file which would the server access in a directory that a user accessed.
- //For example, by default, http://localhost/a-directory resolves to http://localhost/a-directory/index.html.
- "implicit_page": "index.html",
- //static_file_headers: Headers for static files
- /*"static_file_headers": [
- {
- "name": "field-name",
- "value": "field-value"
- }
- ],*/
- //upload_path: The path to save the uploaded file. "uploads" by default.
- //If the path isn't prefixed with /, ./ or ../,
- //it is relative path of document_root path
- "upload_path": "uploads",
- /* file_types:
- * HTTP download file types,The file types supported by drogon
- * by default are "html", "js", "css", "xml", "xsl", "txt", "svg",
- * "ttf", "otf", "woff2", "woff" , "eot", "png", "jpg", "jpeg",
- * "gif", "bmp", "ico", "icns", etc. */
- "file_types": [
- "gif",
- "png",
- "jpg",
- "js",
- "css",
- "html",
- "ico",
- "swf",
- "xap",
- "apk",
- "cur",
- "xml",
- "webp",
- "svg"
- ],
- // mime: A dictionary that extends the internal MIME type support. Maps extensions into new MIME types
- // note: This option only adds MIME to the sever. `file_types` above have to be set for the server to serve them.
- "mime": {
- // "text/markdown": "md",
- // "text/gemini": ["gmi", "gemini"]
- },
- //locations: An array of locations of static files for GET requests.
- "locations": [
- {
- //uri_prefix: The URI prefix of the location prefixed with "/", the default value is "" that disables the location.
- //"uri_prefix": "/.well-known/acme-challenge/",
- //default_content_type: The default content type of the static files without
- //an extension. empty string by default.
- "default_content_type": "text/plain",
- //alias: The location in file system, if it is prefixed with "/", it
- //presents an absolute path, otherwise it presents a relative path to
- //the document_root path.
- //The default value is "" which means use the document root path as the location base path.
- "alias": "",
- //is_case_sensitive: indicates whether the URI prefix is case sensitive.
- "is_case_sensitive": false,
- //allow_all: true by default. If it is set to false, only static files with a valid extension can be accessed.
- "allow_all": true,
- //is_recursive: true by default. If it is set to false, files in sub directories can't be accessed.
- "is_recursive": true,
- //filters: string array, the filters applied to the location.
- "filters": []
- }
- ],
- //max_connections: maximum number of connections, 100000 by default
- "max_connections": 100000,
- //max_connections_per_ip: maximum number of connections per clinet, 0 by default which means no limit
- "max_connections_per_ip": 0,
- //Load_dynamic_views: False by default, when set to true, drogon
- //compiles and loads dynamically "CSP View Files" in directories defined
- //by "dynamic_views_path"
- "load_dynamic_views": false,
- //dynamic_views_path: If the path isn't prefixed with /, ./ or ../,
- //it is relative path of document_root path
- "dynamic_views_path": [
- "./views"
- ],
- //dynamic_views_output_path: Default by an empty string which means the output path of source
- //files is the path where the csp files locate. If the path isn't prefixed with /, it is relative
- //path of the current working directory.
- "dynamic_views_output_path": "",
- //json_parser_stack_limit: 1000 by default, the maximum number of stack depth when reading a json string by the jsoncpp library.
- "json_parser_stack_limit": 1000,
- //enable_unicode_escaping_in_json: true by default, enable unicode escaping in json.
- "enable_unicode_escaping_in_json": true,
- //float_precision_in_json: set precision of float number in json.
- "float_precision_in_json": {
- //precision: 0 by default, 0 means use the default precision of the jsoncpp lib.
- "precision": 0,
- //precision_type: must be "significant" or "decimal", defaults to "significant" that means
- //setting max number of significant digits in string, "decimal" means setting max number of
- //digits after "." in string
- "precision_type": "significant"
- },
- //log: Set log output, drogon output logs to stdout by default
- "log": {
- //log_path: Log file path,empty by default,in which case,logs are output to the stdout
- //"log_path": "./",
- //logfile_base_name: Log file base name,empty by default which means drogon names logfile as
- //drogon.log ...
- "logfile_base_name": "",
- //log_size_limit: 100000000 bytes by default,
- //When the log file size reaches "log_size_limit", the log file is switched.
- "log_size_limit": 100000000,
- //max_files: 0 by default,
- //When the number of old log files exceeds "max_files", the oldest file will be deleted. 0 means never delete.
- "max_files": 0,
- //log_level: "DEBUG" by default,options:"TRACE","DEBUG","INFO","WARN"
- //The TRACE level is only valid when built in DEBUG mode.
- "log_level": "DEBUG",
- //display_local_time: false by default, if true, the log time is displayed in local time
- "display_local_time": false
- },
- //run_as_daemon: False by default
- "run_as_daemon": false,
- //handle_sig_term: True by default
- "handle_sig_term": true,
- //relaunch_on_error: False by default, if true, the program will be restart by the parent after exiting;
- "relaunch_on_error": false,
- //use_sendfile: True by default, if true, the program
- //uses sendfile() system-call to send static files to clients;
- "use_sendfile": true,
- //use_gzip: True by default, use gzip to compress the response body's content;
- "use_gzip": true,
- //use_brotli: False by default, use brotli to compress the response body's content;
- "use_brotli": false,
- //static_files_cache_time: 5 (seconds) by default, the time in which the static file response is cached,
- //0 means cache forever, the negative value means no cache
- "static_files_cache_time": 5,
- //simple_controllers_map: Used to configure mapping from path to simple controller
- "simple_controllers_map": [
- {
- "path": "/path/name",
- "controller": "controllerClassName",
- "http_methods": [
- "get",
- "post"
- ],
- "filters": [
- "FilterClassName"
- ]
- }
- ],
- //idle_connection_timeout: Defaults to 60 seconds, the lifetime
- //of the connection without read or write
- "idle_connection_timeout": 60,
- //server_header_field: Set the 'Server' header field in each response sent by drogon,
- //empty string by default with which the 'Server' header field is set to "Server: drogon/version string\r\n"
- "server_header_field": "",
- //enable_server_header: Set true to force drogon to add a 'Server' header to each HTTP response. The default
- //value is true.
- "enable_server_header": true,
- //enable_date_header: Set true to force drogon to add a 'Date' header to each HTTP response. The default
- //value is true.
- "enable_date_header": true,
- //keepalive_requests: Set the maximum number of requests that can be served through one keep-alive connection.
- //After the maximum number of requests are made, the connection is closed.
- //The default value of 0 means no limit.
- "keepalive_requests": 0,
- //pipelining_requests: Set the maximum number of unhandled requests that can be cached in pipelining buffer.
- //After the maximum number of requests are made, the connection is closed.
- //The default value of 0 means no limit.
- "pipelining_requests": 0,
- //gzip_static: If it is set to true, when the client requests a static file, drogon first finds the compressed
- //file with the extension ".gz" in the same path and send the compressed file to the client.
- //The default value of gzip_static is true.
- "gzip_static": true,
- //br_static: If it is set to true, when the client requests a static file, drogon first finds the compressed
- //file with the extension ".br" in the same path and send the compressed file to the client.
- //The default value of br_static is true.
- "br_static": true,
- //client_max_body_size: Set the maximum body size of HTTP requests received by drogon. The default value is "1M".
- //One can set it to "1024", "1k", "10M", "1G", etc. Setting it to "" means no limit.
- "client_max_body_size": "1M",
- //max_memory_body_size: Set the maximum body size in memory of HTTP requests received by drogon. The default value is "64K" bytes.
- //If the body size of a HTTP request exceeds this limit, the body is stored to a temporary file for processing.
- //Setting it to "" means no limit.
- "client_max_memory_body_size": "64K",
- //client_max_websocket_message_size: Set the maximum size of messages sent by WebSocket client. The default value is "128K".
- //One can set it to "1024", "1k", "10M", "1G", etc. Setting it to "" means no limit.
- "client_max_websocket_message_size": "128K",
- //reuse_port: Defaults to false, users can run multiple processes listening on the same port at the same time.
- "reuse_port": false,
- // enabled_compressed_request: Defaults to false. If true the server will automatically decompress compressed request bodies.
- // Currently only gzip and br are supported. Note: max_memory_body_size and max_body_size applies twice for compressed requests.
- // Once when receiving and once when decompressing. i.e. if the decompressed body is larger than max_body_size, the request
- // will be rejected.
- "enabled_compressed_request": false
- },
- //plugins: Define all plugins running in the application
- "plugins": [
- {
- //name: The class name of the plugin
- //"name": "drogon::plugin::SecureSSLRedirector",
- //dependencies: Plugins that the plugin depends on. It can be commented out
- "dependencies": [],
- //config: The configuration of the plugin. This json object is the parameter to initialize the plugin.
- //It can be commented out
- "config": {
- "ssl_redirect_exempt": [
- ".*\\.jpg"
- ],
- "secure_ssl_host": "localhost:8849"
- }
- }
- ],
- //custom_config: custom configuration for users. This object can be get by the app().getCustomConfig() method.
- "custom_config": {
- "realm": "drogonRealm",
- "opaque": "drogonOpaque",
- "credentials": [
- {
- "user": "drogon",
- "password": "dr0g0n"
- }
- ]
- }
-}
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/config.example.yaml b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/config.example.yaml
deleted file mode 100644
index 52ad431511db..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/config.example.yaml
+++ /dev/null
@@ -1,290 +0,0 @@
-# This is a YAML format configuration file
-
-# ssl:The global SSL settings. "key" and "cert" are the path to the SSL key and certificate. While
-# "conf" is an array of 1 or 2-element tuples that supplies file style options for `SSL_CONF_cmd`.
-# ssl:
-# cert: ../../trantor/trantor/tests/server.pem
-# key: ../../trantor/trantor/tests/server.pem
-# conf: [
-# # [Options, -SessionTicket],
-# # [Options, Compression]
-# ]
-# listeners:
-# # address: Ip address,0.0.0.0 by default
-# - address: 0.0.0.0
-# # port: Port number
-# port: 80
-# # https: If true, use https for security,false by default
-# https: false
-# - address: 0.0.0.0
-# port: 443
-# https: true
-# # cert,key: Cert file path and key file path, empty by default,
-# # if empty, use the global setting
-# cert: ''
-# key: ''
-# # use_old_tls: enable the TLS1.0/1.1, false by default
-# use_old_tls: false
-# ssl_conf: [
-# # [MinProtocol, TLSv1.3]
-# ]
-# db_clients:
-# # name: Name of the client,'default' by default
-# - name: ''
-# # rdbms: Server type, postgresql,mysql or sqlite3, "postgresql" by default
-# rdbms: postgresql
-# # filename: Sqlite3 db file name
-# # filename: '',
-# # host: Server address,localhost by default
-# host: 127.0.0.1
-# # port: Server port, 5432 by default
-# port: 5432
-# # dbname: Database name
-# dbname: test
-# # user: 'postgres' by default
-# user: ''
-# # passwd: '' by default
-# passwd: ''
-# # is_fast: false by default, if it is true, the client is faster but user can't call
-# # any synchronous interface of it.
-# is_fast: false
-# # client_encoding: The character set used by the client. it is empty string by default which
-# # means use the default character set.
-# # client_encoding: '',
-# # number_of_connections: 1 by default, if the 'is_fast' is true, the number is the number of
-# # connections per IO thread, otherwise it is the total number of all connections.
-# number_of_connections: 1
-# # timeout: -1 by default, in seconds, the timeout for executing a SQL query.
-# # zero or negative value means no timeout.
-# timeout: -1
-# # "auto_batch": this feature is only available for the PostgreSQL driver(version >= 14.0), see
-# # the wiki for more details.
-# auto_batch: false
-# redis_clients:
-# # name: Name of the client,'default' by default
-# - name: ''
-# # host: Server IP, 127.0.0.1 by default
-# host: 127.0.0.1
-# # port: Server port, 6379 by default
-# port: 6379
-# # username: '' by default which means 'default' in redis ACL
-# username: ''
-# # passwd: '' by default
-# passwd: ''
-# # db index: 0 by default
-# db: 0
-# # is_fast: false by default, if it is true, the client is faster but user can't call
-# # any synchronous interface of it.
-# is_fast: false
-# # number_of_connections: 1 by default, if the 'is_fast' is true, the number is the number of
-# # connections per IO thread, otherwise it is the total number of all connections.
-# number_of_connections: 1
-# # timeout: -1.0 by default, in seconds, the timeout for executing a command.
-# # zero or negative value means no timeout.
-# timeout: -1
-app:
- # number_of_threads: The number of IO threads, 1 by default, if the value is set to 0, the number of threads
- # is the number of CPU cores
- number_of_threads: 1
- # enable_session: False by default
- enable_session: true
- session_timeout: 0
- # string value of SameSite attribute of the Set-Cookie HTTP respone header
- # valid value is either 'Null' (default), 'Lax', 'Strict' or 'None'
- session_same_site: 'Null'
- # document_root: Root path of HTTP document, defaut path is ./
- document_root: ./
- # home_page: Set the HTML file of the home page, the default value is "index.html"
- # If there isn't any handler registered to the path "/", the home page file in the "document_root" is send to clients as a response
- # to the request for "/".
- home_page: index.html
- # use_implicit_page: enable implicit pages if true, true by default
- use_implicit_page: true
- # implicit_page: Set the file which would the server access in a directory that a user accessed.
- # For example, by default, http://localhost/a-directory resolves to http://localhost/a-directory/index.html.
- implicit_page: index.html
- # static_file_headers: Headers for static files
- # static_file_headers:
- # - name: field-name
- # value: field-value
- # upload_path: The path to save the uploaded file. "uploads" by default.
- # If the path isn't prefixed with /, ./ or ../,
- # it is relative path of document_root path
- upload_path: uploads
- # file_types:
- # HTTP download file types,The file types supported by drogon
- # by default are "html", "js", "css", "xml", "xsl", "txt", "svg",
- # "ttf", "otf", "woff2", "woff" , "eot", "png", "jpg", "jpeg",
- # "gif", "bmp", "ico", "icns", etc.
- file_types:
- - gif
- - png
- - jpg
- - js
- - css
- - html
- - ico
- - swf
- - xap
- - apk
- - cur
- - xml
- # mime: A dictionary that extends the internal MIME type support. Maps extensions into new MIME types
- # note: This option only adds MIME to the sever. `file_types` above have to be set for the server to serve them.
- mime: {
- # text/markdown: md,
- # text/gemini: [gmi, gemini]
- }
- # locations: An array of locations of static files for GET requests.
- locations:
- # uri_prefix: The URI prefix of the location prefixed with "/", the default value is "" that disables the location.
- - uri_prefix: '' # /.well-known/acme-challenge/
- # default_content_type: The default content type of the static files without
- # an extension. empty string by default.
- default_content_type: text/plain
- # alias: The location in file system, if it is prefixed with "/", it
- # presents an absolute path, otherwise it presents a relative path to
- # the document_root path.
- # The default value is "" which means use the document root path as the location base path.
- alias: ''
- # is_case_sensitive: indicates whether the URI prefix is case sensitive.
- is_case_sensitive: false
- # allow_all: true by default. If it is set to false, only static files with a valid extension can be accessed.
- allow_all: true
- # is_recursive: true by default. If it is set to false, files in sub directories can't be accessed.
- is_recursive: true
- # filters: string array, the filters applied to the location.
- filters: []
- # max_connections: maximum number of connections, 100000 by default
- max_connections: 100000
- # max_connections_per_ip: maximum number of connections per clinet, 0 by default which means no limit
- max_connections_per_ip: 0
- # Load_dynamic_views: False by default, when set to true, drogon
- # compiles and loads dynamically "CSP View Files" in directories defined
- # by "dynamic_views_path"
- load_dynamic_views: false
- # dynamic_views_path: If the path isn't prefixed with /, ./ or ../,
- # it is relative path of document_root path
- dynamic_views_path:
- - ./views
- # dynamic_views_output_path: Default by an empty string which means the output path of source
- # files is the path where the csp files locate. If the path isn't prefixed with /, it is relative
- # path of the current working directory.
- dynamic_views_output_path: ''
- # json_parser_stack_limit: 1000 by default, the maximum number of stack depth when reading a json string by the jsoncpp library.
- json_parser_stack_limit: 1000
- # enable_unicode_escaping_in_json: true by default, enable unicode escaping in json.
- enable_unicode_escaping_in_json: true
- # float_precision_in_json: set precision of float number in json.
- float_precision_in_json:
- # precision: 0 by default, 0 means use the default precision of the jsoncpp lib.
- precision: 0
- # precision_type: must be "significant" or "decimal", defaults to "significant" that means
- # setting max number of significant digits in string, "decimal" means setting max number of
- # digits after "." in string
- precision_type: significant
- # log: Set log output, drogon output logs to stdout by default
- log:
- # log_path: Log file path,empty by default,in which case,logs are output to the stdout
- # log_path: ./
- # logfile_base_name: Log file base name,empty by default which means drogon names logfile as
- # drogon.log ...
- logfile_base_name: ''
- # log_size_limit: 100000000 bytes by default,
- # When the log file size reaches "log_size_limit", the log file is switched.
- log_size_limit: 100000000
- # log_level: "DEBUG" by default,options:"TRACE","DEBUG","INFO","WARN"
- # The TRACE level is only valid when built in DEBUG mode.
- log_level: DEBUG
- # display_local_time: false by default, if true, the log time is displayed in local time
- display_local_time: false
- # run_as_daemon: False by default
- run_as_daemon: false
- # handle_sig_term: True by default
- handle_sig_term: true
- # relaunch_on_error: False by default, if true, the program will be restart by the parent after exiting;
- relaunch_on_error: false
- # use_sendfile: True by default, if true, the program
- # uses sendfile() system-call to send static files to clients;
- use_sendfile: true
- # use_gzip: True by default, use gzip to compress the response body's content;
- use_gzip: true
- # use_brotli: False by default, use brotli to compress the response body's content;
- use_brotli: false
- # static_files_cache_time: 5 (seconds) by default, the time in which the static file response is cached,
- # 0 means cache forever, the negative value means no cache
- static_files_cache_time: 5
- # simple_controllers_map: Used to configure mapping from path to simple controller
- simple_controllers_map:
- - path: /path/name
- controller: controllerClassName
- http_methods:
- - get
- - post
- filters:
- - FilterClassName
- # idle_connection_timeout: Defaults to 60 seconds, the lifetime
- # of the connection without read or write
- idle_connection_timeout: 60
- # server_header_field: Set the 'Server' header field in each response sent by drogon,
- # empty string by default with which the 'Server' header field is set to "Server: drogon/version string\r\n"
- server_header_field: ''
- # enable_server_header: Set true to force drogon to add a 'Server' header to each HTTP response. The default
- # value is true.
- enable_server_header: true
- # enable_date_header: Set true to force drogon to add a 'Date' header to each HTTP response. The default
- # value is true.
- enable_date_header: true
- # keepalive_requests: Set the maximum number of requests that can be served through one keep-alive connection.
- # After the maximum number of requests are made, the connection is closed.
- # The default value of 0 means no limit.
- keepalive_requests: 0
- # pipelining_requests: Set the maximum number of unhandled requests that can be cached in pipelining buffer.
- # After the maximum number of requests are made, the connection is closed.
- # The default value of 0 means no limit.
- pipelining_requests: 0
- # gzip_static: If it is set to true, when the client requests a static file, drogon first finds the compressed
- # file with the extension ".gz" in the same path and send the compressed file to the client.
- # The default value of gzip_static is true.
- gzip_static: true
- # br_static: If it is set to true, when the client requests a static file, drogon first finds the compressed
- # file with the extension ".br" in the same path and send the compressed file to the client.
- # The default value of br_static is true.
- br_static: true
- # client_max_body_size: Set the maximum body size of HTTP requests received by drogon. The default value is "1M".
- # One can set it to "1024", "1k", "10M", "1G", etc. Setting it to "" means no limit.
- client_max_body_size: 1M
- # max_memory_body_size: Set the maximum body size in memory of HTTP requests received by drogon. The default value is "64K" bytes.
- # If the body size of a HTTP request exceeds this limit, the body is stored to a temporary file for processing.
- # Setting it to "" means no limit.
- client_max_memory_body_size: 64K
- # client_max_websocket_message_size: Set the maximum size of messages sent by WebSocket client. The default value is "128K".
- # One can set it to "1024", "1k", "10M", "1G", etc. Setting it to "" means no limit.
- client_max_websocket_message_size: 128K
- # reuse_port: Defaults to false, users can run multiple processes listening on the same port at the same time.
- reuse_port: false
- # enabled_compresed_request: Defaults to false. If true the server will automatically decompress compressed request bodies.
- # Currently only gzip and br are supported. Note: max_memory_body_size and max_body_size applies twice for compressed requests.
- # Once when receiving and once when decompressing. i.e. if the decompressed body is larger than max_body_size, the request
- # will be rejected.
- enabled_compresed_request: false
-# plugins: Define all plugins running in the application
-plugins:
- # name: The class name of the plugin
- - name: '' # drogon::plugin::SecureSSLRedirector
- # dependencies: Plugins that the plugin depends on. It can be commented out
- dependencies: []
- # config: The configuration of the plugin. This json object is the parameter to initialize the plugin.
- # It can be commented out
- config:
- ssl_redirect_exempt:
- - .*\.jpg
- secure_ssl_host: 'localhost:8849'
-# custom_config: custom configuration for users. This object can be get by the app().getCustomConfig() method.
-custom_config:
- realm: drogonRealm
- opaque: drogonOpaque
- credentials:
- - user: drogon
- password: dr0g0n
-
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/docker/alpine/Dockerfile b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/docker/alpine/Dockerfile
deleted file mode 100644
index e21469996aa1..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/docker/alpine/Dockerfile
+++ /dev/null
@@ -1,42 +0,0 @@
-FROM alpine:3.14
-
-ARG USER=drogon
-ARG UID=1000
-ARG GID=1000
-ARG USER_HOME=/drogon
-
-ENV TZ=UTC
-
-RUN apk update && apk --no-cache --upgrade add tzdata \
- && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
- && echo $TZ > /etc/timezone
-
-RUN apk --no-cache --upgrade add \
- sudo curl wget cmake make pkgconfig git gcc g++ \
- openssl libressl-dev jsoncpp-dev util-linux-dev zlib-dev c-ares-dev \
- postgresql-dev mariadb-dev sqlite-dev hiredis-dev
-
-RUN addgroup -S -g $GID $USER \
- && adduser -D -u $UID -G $USER -h $USER_HOME $USER \
- && mkdir -p /etc/sudoers.d \
- && echo "$USER ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/$USER \
- && chmod 0440 /etc/sudoers.d/$USER
-
-USER $USER
-WORKDIR $USER_HOME
-
-ENV LANG=en_US.UTF-8 \
- LANGUAGE=en_US:en \
- LC_ALL=en_US.UTF-8 \
- CC=gcc \
- CXX=g++ \
- AR=gcc-ar \
- RANLIB=gcc-ranlib \
- DROGON_INSTALLED_ROOT=$USER_HOME/install
-
-RUN wget -O $USER_HOME/version.json https://api.github.com/repos/an-tao/drogon/git/refs/heads/master \
- && git clone https://github.com/an-tao/drogon $DROGON_INSTALLED_ROOT
-
-RUN cd $DROGON_INSTALLED_ROOT \
- && sed -i 's/bash/sh/' ./build.sh \
- && ./build.sh
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/docker/alpine/README.md b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/docker/alpine/README.md
deleted file mode 100644
index 83c7c33d7135..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/docker/alpine/README.md
+++ /dev/null
@@ -1,32 +0,0 @@
-## Build Docker Image
-
-```shell
-$ cd drogon/docker/alpine # from this repository
-$ docker build --no-cache --build-arg UID=`id -u` --build-arg GID=`id -g` -t drogon-alpine . # include last dot(.)
-```
-
-## Create a Drogon Project
-
-```shell
-$ cd ~/drogon_app # example
-$ docker run --rm -v="$PWD:/drogon/app" -w="/drogon/app" drogon-alpine drogon_ctl create project hello_world
-```
-
-## Build the Project
-
-```shell
-$ cd hello_world
-$ docker run --rm --volume="$PWD:/drogon/app" -w="/drogon/app/build" drogon-alpine sh -c "cmake .. && make"
-```
-
-## Start Server
-
-```shell
-$ docker run --name drogon_test --rm -u 0 -v="$PWD/build:/drogon/app" -w="/drogon/app" -p 8080:80 -d drogon-alpine ./hello_world # expose port 80 to 8080
-```
-
-## Stop Server
-
-```shell
-$ docker kill drogon_test
-```
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/docker/arch/Dockerfile b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/docker/arch/Dockerfile
deleted file mode 100644
index 50b1c0c893ab..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/docker/arch/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-FROM archlinux:base-20210307.0.16708
-
-RUN pacman -Syu --noconfirm && pacman -S wget sudo cmake make git gcc jsoncpp postgresql mariadb-clients hiredis --noconfirm
-
-ENV LANG=en_US.UTF-8 \
- LANGUAGE=en_US:en \
- LC_ALL=en_US.UTF-8 \
- CC=gcc \
- CXX=g++ \
- AR=gcc-ar \
- RANLIB=gcc-ranlib \
- IROOT=/install
-
-ENV DROGON_ROOT="$IROOT/drogon"
-
-ADD https://api.github.com/repos/an-tao/drogon/git/refs/heads/master $IROOT/version.json
-RUN git clone https://github.com/an-tao/drogon $DROGON_ROOT
-
-WORKDIR $DROGON_ROOT
-
-RUN ./build.sh
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/docker/ubuntu/Dockerfile b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/docker/ubuntu/Dockerfile
deleted file mode 100644
index b8f0da386c12..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/docker/ubuntu/Dockerfile
+++ /dev/null
@@ -1,30 +0,0 @@
-FROM ubuntu:20.04
-
-ENV TZ=UTC
-RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
-
-RUN apt-get update -yqq \
- && apt-get install -yqq --no-install-recommends software-properties-common \
- curl wget cmake make pkg-config locales git gcc-10 g++-10 \
- openssl libssl-dev libjsoncpp-dev uuid-dev zlib1g-dev libc-ares-dev\
- postgresql-server-dev-all libmariadbclient-dev libsqlite3-dev libhiredis-dev\
- && rm -rf /var/lib/apt/lists/* \
- && locale-gen en_US.UTF-8
-
-ENV LANG=en_US.UTF-8 \
- LANGUAGE=en_US:en \
- LC_ALL=en_US.UTF-8 \
- CC=gcc-10 \
- CXX=g++-10 \
- AR=gcc-ar-10 \
- RANLIB=gcc-ranlib-10 \
- IROOT=/install
-
-ENV DROGON_ROOT="$IROOT/drogon"
-
-ADD https://api.github.com/repos/an-tao/drogon/git/refs/heads/master $IROOT/version.json
-RUN git clone https://github.com/an-tao/drogon $DROGON_ROOT
-
-WORKDIR $DROGON_ROOT
-
-RUN ./build.sh
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon.jpg b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon.jpg
deleted file mode 100644
index 35cfca75759d..000000000000
Binary files a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon.jpg and /dev/null differ
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/CMakeLists.txt b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/CMakeLists.txt
deleted file mode 100755
index 249c453dd79d..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/CMakeLists.txt
+++ /dev/null
@@ -1,88 +0,0 @@
-set(ctl_sources
- cmd.cc
- create.cc
- create_controller.cc
- create_filter.cc
- create_model.cc
- create_plugin.cc
- create_project.cc
- create_view.cc
- help.cc
- main.cc
- press.cc
- version.cc)
-add_executable(_drogon_ctl
- main.cc
- cmd.cc
- create.cc
- create_view.cc)
-target_link_libraries(_drogon_ctl ${PROJECT_NAME})
-if (WIN32 AND BUILD_SHARED_LIBS)
- set(DROGON_FILE $)
- if (USE_SUBMODULE)
- set(TRANTOR_FILE $)
- else()
- set(TRANTOR_FILE $)
- endif()
- add_custom_command(TARGET _drogon_ctl POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- -DCTL_FILE=${DROGON_FILE}
- -DINSTALL_BIN_DIR=$
- -P
- ${CMAKE_CURRENT_SOURCE_DIR}/CopyDlls.cmake)
- add_custom_command(TARGET _drogon_ctl POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- -DCTL_FILE=${TRANTOR_FILE}
- -DINSTALL_BIN_DIR=$
- -P
- ${CMAKE_CURRENT_SOURCE_DIR}/CopyDlls.cmake)
-endif()
-file(GLOB SCP_LIST ${CMAKE_CURRENT_SOURCE_DIR}/templates/*.csp)
-foreach(cspFile ${SCP_LIST})
- message(STATUS "cspFile:" ${cspFile})
- get_filename_component(classname ${cspFile} NAME_WE)
- message(STATUS "view classname:" ${classname})
- add_custom_command(OUTPUT ${classname}.h ${classname}.cc
- COMMAND $
- ARGS
- create
- view
- ${cspFile}
- DEPENDS ${cspFile}
- VERBATIM)
- set(TEMPL_SRC ${TEMPL_SRC} ${classname}.cc)
-endforeach()
-add_executable(drogon_ctl ${ctl_sources} ${TEMPL_SRC})
-target_link_libraries(drogon_ctl PRIVATE ${PROJECT_NAME})
-target_include_directories(drogon_ctl PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
-add_dependencies(drogon_ctl _drogon_ctl)
-if(WIN32)
- target_link_libraries(drogon_ctl PRIVATE ws2_32 Rpcrt4 iphlpapi)
-endif(WIN32)
-if(APPLE)
- target_link_libraries(drogon_ctl PRIVATE resolv)
-endif()
-message(STATUS "bin:" ${INSTALL_BIN_DIR})
-install(TARGETS drogon_ctl RUNTIME DESTINATION ${INSTALL_BIN_DIR})
-if(WIN32)
- set(CTL_FILE $)
- add_custom_command(TARGET drogon_ctl POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- -DCTL_FILE=${CTL_FILE}
- -DINSTALL_BIN_DIR=${INSTALL_BIN_DIR}
- -DRENAME_EXE=ON
- -P
- ${CMAKE_CURRENT_SOURCE_DIR}/CopyDlls.cmake)
-else(WIN32)
- install(CODE "execute_process( \
- COMMAND ${CMAKE_COMMAND} -E create_symlink \
- ./drogon_ctl \
- ./dg_ctl \
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})")
- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/dg_ctl"
- DESTINATION ${INSTALL_BIN_DIR})
-endif(WIN32)
-set(ctl_targets _drogon_ctl drogon_ctl)
-set_property(TARGET ${ctl_targets} PROPERTY CXX_STANDARD ${DROGON_CXX_STANDARD})
-set_property(TARGET ${ctl_targets} PROPERTY CXX_STANDARD_REQUIRED ON)
-set_property(TARGET ${ctl_targets} PROPERTY CXX_EXTENSIONS OFF)
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/CommandHandler.h b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/CommandHandler.h
deleted file mode 100644
index 872dcec9ae9e..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/CommandHandler.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- *
- * CommandHandler.h
- * An Tao
- *
- * Copyright 2018, An Tao. All rights reserved.
- * https://github.com/an-tao/drogon
- * Use of this source code is governed by a MIT license
- * that can be found in the License file.
- *
- * Drogon
- *
- */
-
-#pragma once
-
-#include
-#include
-#include
-
-class CommandHandler : public virtual drogon::DrObjectBase
-{
- public:
- virtual void handleCommand(std::vector ¶meters) = 0;
- virtual bool isTopCommand()
- {
- return false;
- }
- virtual std::string script()
- {
- return "";
- }
- virtual std::string detail()
- {
- return "";
- }
- virtual ~CommandHandler()
- {
- }
-};
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/CopyDlls.cmake b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/CopyDlls.cmake
deleted file mode 100644
index 50d5111a4a74..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/CopyDlls.cmake
+++ /dev/null
@@ -1,8 +0,0 @@
-make_directory("${INSTALL_BIN_DIR}")
-get_filename_component(CTL_PATH ${CTL_FILE} DIRECTORY)
-file(GLOB DLL_FILES ${CTL_PATH}/*.dll)
-file(COPY ${DLL_FILES} DESTINATION ${INSTALL_BIN_DIR})
-file(COPY ${CTL_FILE} DESTINATION ${INSTALL_BIN_DIR})
-if (RENAME_EXE)
- file(RENAME ${INSTALL_BIN_DIR}/drogon_ctl.exe ${INSTALL_BIN_DIR}/dg_ctl.exe)
-endif()
\ No newline at end of file
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/cmd.cc b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/cmd.cc
deleted file mode 100644
index 7f508b1257c6..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/cmd.cc
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- *
- * cmd.cc
- * An Tao
- *
- * Copyright 2018, An Tao. All rights reserved.
- * https://github.com/an-tao/drogon
- * Use of this source code is governed by a MIT license
- * that can be found in the License file.
- *
- * Drogon
- *
- */
-
-#include "cmd.h"
-#include "CommandHandler.h"
-#include
-#include
-using namespace drogon;
-
-void exeCommand(std::vector ¶meters)
-{
- if (parameters.empty())
- {
- std::cout << "incomplete command!use help command to get usage!"
- << std::endl;
- return;
- }
- std::string command = parameters[0];
-
- std::string handlerName = std::string("drogon_ctl::").append(command);
-
- parameters.erase(parameters.begin());
-
- // new command handler to do cmd
- auto obj = std::shared_ptr(
- drogon::DrClassMap::newObject(handlerName));
- if (obj)
- {
- auto ctl = std::dynamic_pointer_cast(obj);
- if (ctl)
- {
- ctl->handleCommand(parameters);
- }
- else
- {
- std::cout << "command not found!use help command to get usage!"
- << std::endl;
- }
- }
- else
- {
- std::cout << "command error!use help command to get usage!"
- << std::endl;
- }
-}
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/cmd.h b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/cmd.h
deleted file mode 100755
index e6700d555334..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/cmd.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- *
- * cmd.h
- * An Tao
- *
- * Copyright 2018, An Tao. All rights reserved.
- * https://github.com/an-tao/drogon
- * Use of this source code is governed by a MIT license
- * that can be found in the License file.
- *
- * Drogon
- *
- */
-
-#pragma once
-
-#include
-#include
-#include
-#define ARGS_ERROR_STR "args error!use help command to get usage!"
-void exeCommand(std::vector ¶meters);
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create.cc b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create.cc
deleted file mode 100644
index 67a2da4fa94e..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- *
- * @file create.cc
- * @author An Tao
- *
- * Copyright 2018, An Tao. All rights reserved.
- * https://github.com/an-tao/drogon
- * Use of this source code is governed by a MIT license
- * that can be found in the License file.
- *
- * Drogon
- *
- */
-
-#include "create.h"
-#include "cmd.h"
-#include
-#include
-#include
-using namespace drogon_ctl;
-std::string create::detail()
-{
- return "Use create command to create some source files of drogon webapp\n\n"
- "Usage:drogon_ctl create "
- "[-options] \n\n"
- "drogon_ctl create view [-o ] [-n "
- "] [--path-to-namespace] //create HttpView source files "
- "from csp files, namespace is prefixed of path-to-namespace\n\n"
- "drogon_ctl create controller [-s] <[namespace::]class_name> //"
- "create HttpSimpleController source files\n\n"
- "drogon_ctl create controller -h <[namespace::]class_name> //"
- "create HttpController source files\n\n"
- "drogon_ctl create controller -w <[namespace::]class_name> //"
- "create WebSocketController source files\n\n"
- "drogon_ctl create controller -r <[namespace::]class_name> "
- "[--resource=...]//"
- "create restful controller source files\n\n"
- "drogon_ctl create filter <[namespace::]class_name> //"
- "create a filter named class_name\n\n"
- "drogon_ctl create plugin <[namespace::]class_name> //"
- "create a plugin named class_name\n\n"
- "drogon_ctl create project //"
- "create a project named project_name\n\n"
- "drogon_ctl create model [--table=] [-f]//"
- "create model classes in model_path\n";
-}
-
-void create::handleCommand(std::vector ¶meters)
-{
- // std::cout<<"create!"<
-#include "CommandHandler.h"
-using namespace drogon;
-namespace drogon_ctl
-{
-class create : public DrObject, public CommandHandler
-{
- public:
- void handleCommand(std::vector ¶meters) override;
- std::string script() override
- {
- return "create some source files(Use 'drogon_ctl help create' for more "
- "information)";
- }
- bool isTopCommand() override
- {
- return true;
- }
- std::string detail() override;
-};
-} // namespace drogon_ctl
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_controller.cc b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_controller.cc
deleted file mode 100644
index 3e484418d2bc..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_controller.cc
+++ /dev/null
@@ -1,468 +0,0 @@
-/**
- *
- * create_controller.cc
- * An Tao
- *
- * Copyright 2018, An Tao. All rights reserved.
- * https://github.com/an-tao/drogon
- * Use of this source code is governed by a MIT license
- * that can be found in the License file.
- *
- * Drogon
- *
- */
-
-#include "create_controller.h"
-#include "cmd.h"
-#include
-#include
-#include
-#include
-#include
-
-using namespace drogon_ctl;
-
-void create_controller::handleCommand(std::vector ¶meters)
-{
- // std::cout<<"create!"< 1)
- {
- std::cerr << "Too many parameters" << std::endl;
- exit(1);
- }
- auto className = parameters[0];
- createARestfulController(className, resource);
- }
-}
-
-void create_controller::newSimpleControllerHeaderFile(
- std::ofstream &file,
- const std::string &className)
-{
- file << "#pragma once\n";
- file << "\n";
- file << "#include \n";
- file << "\n";
- file << "using namespace drogon;\n";
- file << "\n";
- std::string class_name = className;
- std::string namepace_path = "/";
- auto pos = class_name.find("::");
- size_t namespaceCount = 0;
- while (pos != std::string::npos)
- {
- ++namespaceCount;
- auto namespaceName = class_name.substr(0, pos);
- class_name = class_name.substr(pos + 2);
- file << "namespace " << namespaceName << "\n";
- namepace_path.append(namespaceName).append("/");
- file << "{\n";
- pos = class_name.find("::");
- }
- file << "class " << class_name << " : public drogon::HttpSimpleController<"
- << class_name << ">\n";
- file << "{\n";
- file << " public:\n";
- file << " void asyncHandleHttpRequest(const HttpRequestPtr& "
- "req, std::function &&callback) "
- "override;\n";
-
- file << " PATH_LIST_BEGIN\n";
- file << " // list path definitions here;\n";
- file << " "
- "// PATH_ADD(\"/"
- "path\", \"filter1\", \"filter2\", HttpMethod1, HttpMethod2...);\n";
- file << " PATH_LIST_END\n";
- file << "};\n";
- while (namespaceCount > 0)
- {
- --namespaceCount;
- file << "}\n";
- }
-}
-void create_controller::newSimpleControllerSourceFile(
- std::ofstream &file,
- const std::string &className,
- const std::string &filename)
-{
- file << "#include \"" << filename << ".h\"\n";
- file << "\n";
- auto pos = className.rfind("::");
- auto class_name = className;
- if (pos != std::string::npos)
- {
- auto namespacename = className.substr(0, pos);
- file << "using namespace " << namespacename << ";\n";
- file << "\n";
- class_name = className.substr(pos + 2);
- }
- file << "void " << class_name
- << "::asyncHandleHttpRequest(const HttpRequestPtr& req, "
- "std::function &&callback)\n";
- file << "{\n";
- file << " // write your application logic here\n";
- file << "}\n";
-}
-
-void create_controller::newWebsockControllerHeaderFile(
- std::ofstream &file,
- const std::string &className)
-{
- file << "#pragma once\n";
- file << "\n";
- file << "#include \n";
- file << "\n";
- file << "using namespace drogon;\n";
- file << "\n";
- std::string class_name = className;
- std::string namepace_path = "/";
- auto pos = class_name.find("::");
- size_t namespaceCount = 0;
- while (pos != std::string::npos)
- {
- ++namespaceCount;
- auto namespaceName = class_name.substr(0, pos);
- class_name = class_name.substr(pos + 2);
- file << "namespace " << namespaceName << "\n";
- namepace_path.append(namespaceName).append("/");
- file << "{\n";
- pos = class_name.find("::");
- }
- file << "class " << class_name << " : public drogon::WebSocketController<"
- << class_name << ">\n";
- file << "{\n";
- file << " public:\n";
- file << " void handleNewMessage(const WebSocketConnectionPtr&,\n";
- file << " std::string &&,\n";
- file << " const WebSocketMessageType &) "
- "override;\n";
- file << " void handleNewConnection(const HttpRequestPtr &,\n";
- file << " const "
- "WebSocketConnectionPtr&) override;\n";
- file << " void handleConnectionClosed(const "
- "WebSocketConnectionPtr&) override;\n";
- file << " WS_PATH_LIST_BEGIN\n";
- file << " // list path definitions here;\n";
- file << " // WS_PATH_ADD(\"/path\", \"filter1\", \"filter2\", ...);\n";
- file << " WS_PATH_LIST_END\n";
- file << "};\n";
- while (namespaceCount > 0)
- {
- --namespaceCount;
- file << "}\n";
- }
-}
-void create_controller::newWebsockControllerSourceFile(
- std::ofstream &file,
- const std::string &className,
- const std::string &filename)
-{
- file << "#include \"" << filename << ".h\"\n";
- file << "\n";
- auto pos = className.rfind("::");
- auto class_name = className;
- if (pos != std::string::npos)
- {
- auto namespacename = className.substr(0, pos);
- file << "using namespace " << namespacename << ";\n";
- file << "\n";
- class_name = className.substr(pos + 2);
- }
- file << "void " << class_name
- << "::handleNewMessage(const WebSocketConnectionPtr& wsConnPtr, "
- "std::string &&message, const WebSocketMessageType &type)\n";
- file << "{\n";
- file << " // write your application logic here\n";
- file << "}\n";
- file << "\n";
- file << "void " << class_name
- << "::handleNewConnection(const HttpRequestPtr &req, const "
- "WebSocketConnectionPtr& wsConnPtr)\n";
- file << "{\n";
- file << " // write your application logic here\n";
- file << "}\n";
- file << "\n";
- file << "void " << class_name
- << "::handleConnectionClosed(const WebSocketConnectionPtr& "
- "wsConnPtr)\n";
- file << "{\n";
- file << " // write your application logic here\n";
- file << "}\n";
-}
-
-void create_controller::newHttpControllerHeaderFile(
- std::ofstream &file,
- const std::string &className)
-{
- file << "#pragma once\n";
- file << "\n";
- file << "#include \n";
- file << "\n";
- file << "using namespace drogon;\n";
- file << "\n";
- std::string class_name = className;
- std::string namepace_path = "/";
- auto pos = class_name.find("::");
- size_t namespaceCount = 0;
- while (pos != std::string::npos)
- {
- ++namespaceCount;
- auto namespaceName = class_name.substr(0, pos);
- class_name = class_name.substr(pos + 2);
- file << "namespace " << namespaceName << "\n";
- namepace_path.append(namespaceName).append("/");
- file << "{\n";
- pos = class_name.find("::");
- }
- file << "class " << class_name << " : public drogon::HttpController<"
- << class_name << ">\n";
- file << "{\n";
- file << " public:\n";
- file << " METHOD_LIST_BEGIN\n";
- file << " // use METHOD_ADD to add your custom processing function "
- "here;\n";
- file << " // METHOD_ADD(" << class_name
- << "::get, \"/{2}/{1}\", Get);"
- " // path is "
- << namepace_path << class_name << "/{arg2}/{arg1}\n";
- file << " // METHOD_ADD(" << class_name
- << "::your_method_name, \"/{1}/{2}/list\", Get);"
- " // path is "
- << namepace_path << class_name << "/{arg1}/{arg2}/list\n";
- file << " // ADD_METHOD_TO(" << class_name
- << "::your_method_name, \"/absolute/path/{1}/{2}/list\", Get);"
- " // path is /absolute/path/{arg1}/{arg2}/list\n";
- file << "\n";
- file << " METHOD_LIST_END\n";
- file << " // your declaration of processing function maybe like this:\n";
- file << " // void get(const HttpRequestPtr& req, "
- "std::function &&callback, int "
- "p1, std::string p2);\n";
- file << " // void your_method_name(const HttpRequestPtr& req, "
- "std::function &&callback, double "
- "p1, int p2) const;\n";
- file << "};\n";
- while (namespaceCount > 0)
- {
- --namespaceCount;
- file << "}\n";
- }
-}
-void create_controller::newHttpControllerSourceFile(
- std::ofstream &file,
- const std::string &className,
- const std::string &filename)
-{
- file << "#include \"" << filename << ".h\"\n";
- file << "\n";
- auto pos = className.rfind("::");
- auto class_name = className;
- if (pos != std::string::npos)
- {
- auto namespacename = className.substr(0, pos);
- file << "using namespace " << namespacename << ";\n";
- file << "\n";
- class_name = className.substr(pos + 2);
- }
-
- file << "// Add definition of your processing function here\n";
-}
-
-void create_controller::createController(std::vector &httpClasses,
- ControllerType type)
-{
- for (auto iter = httpClasses.begin(); iter != httpClasses.end(); ++iter)
- {
- if ((*iter)[0] == '-')
- {
- std::cout << ARGS_ERROR_STR << std::endl;
- return;
- }
- }
- for (auto const &className : httpClasses)
- {
- createController(className, type);
- }
-}
-
-void create_controller::createController(const std::string &className,
- ControllerType type)
-{
- std::regex regex("::");
- std::string ctlName =
- std::regex_replace(className, regex, std::string("_"));
-
- std::string headFileName = ctlName + ".h";
- std::string sourceFilename = ctlName + ".cc";
- {
- std::ifstream iHeadFile(headFileName.c_str(), std::ifstream::in);
- std::ifstream iSourceFile(sourceFilename.c_str(), std::ifstream::in);
-
- if (iHeadFile || iSourceFile)
- {
- std::cout << "The file you want to create already exists, "
- "overwrite it(y/n)?"
- << std::endl;
- auto in = getchar();
- (void)getchar(); // get the return key
- if (in != 'Y' && in != 'y')
- {
- std::cout << "Abort!" << std::endl;
- exit(0);
- }
- }
- }
- std::ofstream oHeadFile(headFileName.c_str(), std::ofstream::out);
- std::ofstream oSourceFile(sourceFilename.c_str(), std::ofstream::out);
- if (!oHeadFile || !oSourceFile)
- {
- perror("");
- exit(1);
- }
- if (type == Http)
- {
- std::cout << "Create a http controller: " << className << std::endl;
- newHttpControllerHeaderFile(oHeadFile, className);
- newHttpControllerSourceFile(oSourceFile, className, ctlName);
- }
- else if (type == Simple)
- {
- std::cout << "Create a http simple controller: " << className
- << std::endl;
- newSimpleControllerHeaderFile(oHeadFile, className);
- newSimpleControllerSourceFile(oSourceFile, className, ctlName);
- }
- else if (type == WebSocket)
- {
- std::cout << "Create a websocket controller: " << className
- << std::endl;
- newWebsockControllerHeaderFile(oHeadFile, className);
- newWebsockControllerSourceFile(oSourceFile, className, ctlName);
- }
-}
-
-void create_controller::createARestfulController(const std::string &className,
- const std::string &resource)
-{
- std::regex regex("::");
- std::string ctlName =
- std::regex_replace(className, regex, std::string("_"));
-
- std::string headFileName = ctlName + ".h";
- std::string sourceFilename = ctlName + ".cc";
- {
- std::ifstream iHeadFile(headFileName.c_str(), std::ifstream::in);
- std::ifstream iSourceFile(sourceFilename.c_str(), std::ifstream::in);
-
- if (iHeadFile || iSourceFile)
- {
- std::cout << "The file you want to create already exists, "
- "overwrite it(y/n)?"
- << std::endl;
- auto in = getchar();
- (void)getchar(); // get the return key
- if (in != 'Y' && in != 'y')
- {
- std::cout << "Abort!" << std::endl;
- exit(0);
- }
- }
- }
- std::ofstream oHeadFile(headFileName.c_str(), std::ofstream::out);
- std::ofstream oSourceFile(sourceFilename.c_str(), std::ofstream::out);
- if (!oHeadFile || !oSourceFile)
- {
- perror("");
- exit(1);
- }
- auto v = utils::splitString(className, "::");
- drogon::DrTemplateData data;
- data.insert("className", v[v.size() - 1]);
- v.pop_back();
- data.insert("namespaceVector", v);
- data.insert("resource", resource);
- data.insert("fileName", ctlName);
- if (resource.empty())
- {
- data.insert("ctlCommand",
- std::string("drogon_ctl create controller -r ") +
- className);
- }
- else
- {
- data.insert("ctlCommand",
- std::string("drogon_ctl create controller -r ") +
- className + " --resource=" + resource);
- }
- try
- {
- auto templ = DrTemplateBase::newTemplate("restful_controller_h.csp");
- oHeadFile << templ->genText(data);
- templ = DrTemplateBase::newTemplate("restful_controller_cc.csp");
- oSourceFile << templ->genText(data);
- }
- catch (const std::exception &err)
- {
- std::cerr << err.what() << std::endl;
- exit(1);
- }
- std::cout << "Create a http restful API controller: " << className
- << std::endl;
- std::cout << "File name: " << ctlName << ".h and " << ctlName << ".cc"
- << std::endl;
-}
\ No newline at end of file
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_controller.h b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_controller.h
deleted file mode 100644
index ed6191df70b5..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_controller.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- *
- * create_controller.h
- * An Tao
- *
- * Copyright 2018, An Tao. All rights reserved.
- * https://github.com/an-tao/drogon
- * Use of this source code is governed by a MIT license
- * that can be found in the License file.
- *
- * Drogon
- *
- */
-
-#pragma once
-
-#include
-#include
-#include "CommandHandler.h"
-using namespace drogon;
-namespace drogon_ctl
-{
-class create_controller : public DrObject,
- public CommandHandler
-{
- public:
- void handleCommand(std::vector ¶meters) override;
- std::string script() override
- {
- return "create controller files";
- }
-
- protected:
- enum ControllerType
- {
- Simple = 0,
- Http,
- WebSocket,
- Restful
- };
-
- void createController(std::vector &httpClasses,
- ControllerType type);
- void createController(const std::string &className, ControllerType type);
- void createARestfulController(const std::string &className,
- const std::string &resource);
-
- void newSimpleControllerHeaderFile(std::ofstream &file,
- const std::string &className);
- void newSimpleControllerSourceFile(std::ofstream &file,
- const std::string &className,
- const std::string &filename);
-
- void newWebsockControllerHeaderFile(std::ofstream &file,
- const std::string &className);
- void newWebsockControllerSourceFile(std::ofstream &file,
- const std::string &className,
- const std::string &filename);
-
- void newHttpControllerHeaderFile(std::ofstream &file,
- const std::string &className);
- void newHttpControllerSourceFile(std::ofstream &file,
- const std::string &className,
- const std::string &filename);
-};
-} // namespace drogon_ctl
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_filter.cc b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_filter.cc
deleted file mode 100644
index 3d909544b81c..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_filter.cc
+++ /dev/null
@@ -1,117 +0,0 @@
-/**
- *
- * create_filter.cc
- * An Tao
- *
- * Copyright 2018, An Tao. All rights reserved.
- * https://github.com/an-tao/drogon
- * Use of this source code is governed by a MIT license
- * that can be found in the License file.
- *
- * Drogon
- *
- */
-
-#include "create_filter.h"
-#include
-#include
-
-#include
-#include
-#ifndef _WIN32
-#include
-#endif
-#include
-#include
-
-#include
-#include
-
-using namespace drogon_ctl;
-
-static void createFilterHeaderFile(std::ofstream &file,
- const std::string &className,
- const std::string &fileName)
-{
- auto templ = drogon::DrTemplateBase::newTemplate("filter_h");
- HttpViewData data;
- if (className.find("::") != std::string::npos)
- {
- auto namespaceVector = utils::splitString(className, "::");
- data.insert("className", namespaceVector.back());
- namespaceVector.pop_back();
- data.insert("namespaceVector", namespaceVector);
- }
- else
- {
- data.insert("className", className);
- }
- data.insert("filename", fileName);
- file << templ->genText(data);
-}
-
-static void createFilterSourceFile(std::ofstream &file,
- const std::string &className,
- const std::string &fileName)
-{
- auto templ = drogon::DrTemplateBase::newTemplate("filter_cc");
- HttpViewData data;
- if (className.find("::") != std::string::npos)
- {
- auto pos = className.rfind("::");
- data.insert("namespaceString", className.substr(0, pos));
- data.insert("className", className.substr(pos + 2));
- }
- else
- {
- data.insert("className", className);
- }
- data.insert("filename", fileName);
- file << templ->genText(data);
-}
-void create_filter::handleCommand(std::vector ¶meters)
-{
- if (parameters.size() < 1)
- {
- std::cout << "Invalid parameters!" << std::endl;
- }
- for (auto className : parameters)
- {
- std::regex regex("::");
- std::string fileName =
- std::regex_replace(className, regex, std::string("_"));
-
- std::string headFileName = fileName + ".h";
- std::string sourceFilename = fileName + ".cc";
- {
- std::ifstream iHeadFile(headFileName.c_str(), std::ifstream::in);
- std::ifstream iSourceFile(sourceFilename.c_str(),
- std::ifstream::in);
-
- if (iHeadFile || iSourceFile)
- {
- std::cout << "The file you want to create already exists, "
- "overwrite it(y/n)?"
- << std::endl;
- auto in = getchar();
- (void)getchar(); // get the return key
- if (in != 'Y' && in != 'y')
- {
- std::cout << "Abort!" << std::endl;
- exit(0);
- }
- }
- }
- std::ofstream oHeadFile(headFileName.c_str(), std::ofstream::out);
- std::ofstream oSourceFile(sourceFilename.c_str(), std::ofstream::out);
- if (!oHeadFile || !oSourceFile)
- {
- perror("");
- exit(1);
- }
-
- std::cout << "create a http filter:" << className << std::endl;
- createFilterHeaderFile(oHeadFile, className, fileName);
- createFilterSourceFile(oSourceFile, className, fileName);
- }
-}
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_filter.h b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_filter.h
deleted file mode 100644
index 141e60b37401..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_filter.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- *
- * create_filter.h
- * An Tao
- *
- * Copyright 2018, An Tao. All rights reserved.
- * https://github.com/an-tao/drogon
- * Use of this source code is governed by a MIT license
- * that can be found in the License file.
- *
- * Drogon
- *
- */
-
-#pragma once
-
-#include
-#include "CommandHandler.h"
-using namespace drogon;
-namespace drogon_ctl
-{
-class create_filter : public DrObject, public CommandHandler
-{
- public:
- void handleCommand(std::vector ¶meters) override;
- std::string script() override
- {
- return "create filter class files";
- }
-
- protected:
- std::string outputPath_{"."};
-};
-} // namespace drogon_ctl
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_model.cc b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_model.cc
deleted file mode 100644
index 5b62fc25a46c..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_model.cc
+++ /dev/null
@@ -1,1376 +0,0 @@
-/**
- *
- * create_model.cc
- * An Tao
- *
- * Copyright 2018, An Tao. All rights reserved.
- * https://github.com/an-tao/drogon
- * Use of this source code is governed by a MIT license
- * that can be found in the License file.
- *
- * Drogon
- *
- */
-
-#include "create_model.h"
-#include "cmd.h"
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#ifndef _WIN32
-#include
-#include
-#include
-#else
-#include
-#endif
-#include
-#include
-
-using namespace std::chrono_literals;
-using namespace drogon_ctl;
-static std::string toLower(const std::string &str)
-{
- auto ret = str;
- std::transform(ret.begin(), ret.end(), ret.begin(), [](unsigned char c) {
- return tolower(c);
- });
- return ret;
-}
-
-static std::string escapeConnString(const std::string &str)
-{
- bool beQuoted = str.empty() || (str.find(' ') != std::string::npos);
-
- std::string escaped;
- escaped.reserve(str.size());
- for (auto ch : str)
- {
- if (ch == '\'')
- escaped.push_back('\\');
- else if (ch == '\\')
- escaped.push_back('\\');
- escaped.push_back(ch);
- }
-
- if (beQuoted)
- return "'" + escaped + "'";
- return escaped;
-}
-
-static std::map> getConvertMethods(
- const Json::Value &convertColumns)
-{
- std::map> ret;
- auto enabled = convertColumns.get("enabled", false).asBool();
- if (!enabled)
- {
- return ret;
- } // endif
- auto items = convertColumns["items"];
- if (items.isNull())
- {
- return ret;
- } // endif
- if (!items.isArray())
- {
- std::cerr << "items of convert must be an array" << std::endl;
- exit(1);
- } // endif
- for (auto &convertColumn : items)
- {
- try
- {
- ConvertMethod c(convertColumn);
- ret[c.tableName()].push_back(c);
- } // try
- catch (const std::runtime_error &e)
- {
- std::cerr << e.what() << std::endl;
- exit(1);
- } // catch
- } // for
-
- return ret;
-}
-
-static std::map> getRelationships(
- const Json::Value &relationships)
-{
- std::map> ret;
- auto enabled = relationships.get("enabled", false).asBool();
- if (!enabled)
- return ret;
- auto items = relationships["items"];
- if (items.isNull())
- return ret;
- if (!items.isArray())
- {
- std::cerr << "items must be an array\n";
- exit(1);
- }
- for (auto &relationship : items)
- {
- try
- {
- Relationship r(relationship);
- ret[r.originalTableName()].push_back(r);
- if (r.enableReverse() &&
- (r.originalTableName() != r.targetTableName() ||
- r.originalTableAlias() != r.targetTableAlias()))
- {
- auto reverse = r.reverse();
- ret[reverse.originalTableName()].push_back(reverse);
- }
- }
- catch (const std::runtime_error &e)
- {
- std::cerr << e.what() << std::endl;
- exit(1);
- }
- }
- return ret;
-}
-
-bool drogon_ctl::ConvertMethod::shouldConvert(const std::string &tableName,
- const std::string &colName) const
-{
- if (tableName == "*")
- {
- return colName == colName_;
- }
- else
- {
- return (tableName == tableName_ && colName == colName_);
- } // endif
-}
-
-#if USE_POSTGRESQL
-void create_model::createModelClassFromPG(
- const std::string &path,
- const DbClientPtr &client,
- const std::string &tableName,
- const std::string &schema,
- const Json::Value &restfulApiConfig,
- const std::vector &relationships,
- const std::vector &convertMethods)
-{
- auto className = nameTransform(tableName, true);
- HttpViewData data;
- data["className"] = className;
- data["tableName"] = toLower(tableName);
- data["hasPrimaryKey"] = (int)0;
- data["primaryKeyName"] = "";
- data["dbName"] = dbname_;
- data["rdbms"] = std::string("postgresql");
- data["relationships"] = relationships;
- data["convertMethods"] = convertMethods;
- if (schema != "public")
- {
- data["schema"] = schema;
- }
- std::vector cols;
- *client << "SELECT * \
- FROM information_schema.columns \
- WHERE table_schema = $1 \
- AND table_name = $2"
- << schema << tableName << Mode::Blocking >>
- [&](const Result &r) {
- if (r.size() == 0)
- {
- std::cout << " ---Can't create model from the table "
- << tableName
- << ", please check privileges on the table."
- << std::endl;
- return;
- }
- for (Result::SizeType i = 0; i < r.size(); ++i)
- {
- auto row = r[i];
- ColumnInfo info;
- info.index_ = i;
- info.dbType_ = "pg";
- info.colName_ = row["column_name"].as();
- info.colTypeName_ = nameTransform(info.colName_, true);
- info.colValName_ = nameTransform(info.colName_, false);
- auto isNullAble = row["is_nullable"].as();
- info.notNull_ = isNullAble == "YES" ? false : true;
- auto type = row["data_type"].as();
- info.colDatabaseType_ = type;
- if (type == "smallint")
- {
- info.colType_ = "short";
- info.colLength_ = 2;
- }
- else if (type == "integer")
- {
- info.colType_ = "int32_t";
- info.colLength_ = 4;
- }
- else if (type == "bigint")
- {
- info.colType_ = "int64_t";
- info.colLength_ = 8;
- }
- else if (type == "real")
- {
- info.colType_ = "float";
- info.colLength_ = sizeof(float);
- }
- else if (type == "double precision")
- {
- info.colType_ = "double";
- info.colLength_ = sizeof(double);
- }
- else if (type == "character varying")
- {
- info.colType_ = "std::string";
- if (!row["character_maximum_length"].isNull())
- info.colLength_ =
- row["character_maximum_length"].as();
- }
- else if (type == "boolean")
- {
- info.colType_ = "bool";
- info.colLength_ = 1;
- }
- else if (type == "date")
- {
- info.colType_ = "::trantor::Date";
- }
- else if (type.find("timestamp") != std::string::npos)
- {
- info.colType_ = "::trantor::Date";
- }
- else if (type == "bytea")
- {
- info.colType_ = "std::vector";
- }
- else if (type.find("numeric") != std::string::npos)
- {
- info.colType_ = "std::string";
- }
- else
- {
- info.colType_ = "std::string";
- }
- auto defaultVal = row["column_default"].as();
- if (!defaultVal.empty())
- {
- info.hasDefaultVal_ = true;
- if (defaultVal.find("nextval(") == 0)
- {
- info.isAutoVal_ = true;
- }
- }
- auto isIdentity = row["is_identity"].as();
- if (isIdentity == "YES")
- {
- info.isAutoVal_ = true;
- }
- cols.push_back(std::move(info));
- }
- } >>
- [](const DrogonDbException &e) {
- std::cerr << e.base().what() << std::endl;
- exit(1);
- };
- size_t pkNumber = 0;
- *client << "SELECT \
- pg_constraint.conname AS pk_name,\
- pg_constraint.conkey AS pk_vector \
- FROM pg_constraint \
- INNER JOIN pg_class ON pg_constraint.conrelid = pg_class.oid \
- WHERE \
- pg_class.relname = $1 \
- AND pg_constraint.contype = 'p'"
- << tableName << Mode::Blocking >>
- [&](bool isNull,
- const std::string &pkName,
- const std::vector> &pk) {
- if (!isNull)
- {
- pkNumber = pk.size();
- }
- } >>
- [](const DrogonDbException &e) {
- std::cerr << e.base().what() << std::endl;
- exit(1);
- };
- data["hasPrimaryKey"] = (int)pkNumber;
- if (pkNumber == 1)
- {
- *client << "SELECT \
- pg_attribute.attname AS colname,\
- pg_type.typname AS typename,\
- pg_constraint.contype AS contype \
- FROM pg_constraint \
- INNER JOIN pg_class ON pg_constraint.conrelid = pg_class.oid \
- INNER JOIN pg_attribute ON pg_attribute.attrelid = pg_class.oid \
- AND pg_attribute.attnum = pg_constraint.conkey [ 1 ] \
- INNER JOIN pg_type ON pg_type.oid = pg_attribute.atttypid \
- WHERE pg_class.relname = $1 and pg_constraint.contype='p'"
- << tableName << Mode::Blocking >>
- [&](bool isNull,
- const std::string &colName,
- const std::string &type) {
- if (isNull)
- return;
-
- data["primaryKeyName"] = colName;
- for (auto &col : cols)
- {
- if (col.colName_ == colName)
- {
- col.isPrimaryKey_ = true;
- data["primaryKeyType"] = col.colType_;
- }
- }
- } >>
- [](const DrogonDbException &e) {
- std::cerr << e.base().what() << std::endl;
- exit(1);
- };
- }
- else if (pkNumber > 1)
- {
- std::vector pkNames, pkTypes, pkValNames;
- for (size_t i = 1; i <= pkNumber; ++i)
- {
- *client << "SELECT \
- pg_attribute.attname AS colname,\
- pg_type.typname AS typename,\
- pg_constraint.contype AS contype \
- FROM pg_constraint \
- INNER JOIN pg_class ON pg_constraint.conrelid = pg_class.oid \
- INNER JOIN pg_attribute ON pg_attribute.attrelid = pg_class.oid \
- AND pg_attribute.attnum = pg_constraint.conkey [ $1 ] \
- INNER JOIN pg_type ON pg_type.oid = pg_attribute.atttypid \
- WHERE pg_class.relname = $2 and pg_constraint.contype='p'"
- << (int)i << tableName << Mode::Blocking >>
- [&](bool isNull, std::string colName, const std::string &type) {
- if (isNull)
- return;
- pkNames.push_back(colName);
- pkValNames.push_back(nameTransform(colName, false));
- for (auto &col : cols)
- {
- if (col.colName_ == colName)
- {
- col.isPrimaryKey_ = true;
- pkTypes.push_back(col.colType_);
- }
- }
- } >>
- [](const DrogonDbException &e) {
- std::cerr << e.base().what() << std::endl;
- exit(1);
- };
- }
- data["primaryKeyName"] = pkNames;
- data["primaryKeyType"] = pkTypes;
- data["primaryKeyValNames"] = pkValNames;
- }
-
- data["columns"] = cols;
- std::ofstream headerFile(path + "/" + className + ".h", std::ofstream::out);
- std::ofstream sourceFile(path + "/" + className + ".cc",
- std::ofstream::out);
- auto templ = DrTemplateBase::newTemplate("model_h.csp");
- headerFile << templ->genText(data);
- templ = DrTemplateBase::newTemplate("model_cc.csp");
- sourceFile << templ->genText(data);
- createRestfulAPIController(data, restfulApiConfig);
-}
-void create_model::createModelFromPG(
- const std::string &path,
- const DbClientPtr &client,
- const std::string &schema,
- const Json::Value &restfulApiConfig,
- std::map> &relationships,
- std::map> &convertMethods)
-{
- *client << "SELECT a.oid,"
- "a.relname AS name,"
- "b.description AS comment "
- "FROM pg_class a "
- "LEFT OUTER JOIN pg_description b ON b.objsubid = 0 AND a.oid = "
- "b.objoid "
- "WHERE a.relnamespace = (SELECT oid FROM pg_namespace WHERE "
- "nspname = $1) "
- "AND a.relkind = 'r' ORDER BY a.relname"
- << schema << Mode::Blocking >>
- [&](bool isNull,
- size_t oid,
- std::string &&tableName,
- const std::string &comment) {
- if (!isNull)
- {
- std::cout << "table name:" << tableName << std::endl;
-
- createModelClassFromPG(path,
- client,
- tableName,
- schema,
- restfulApiConfig,
- relationships[tableName],
- convertMethods[tableName]);
- }
- } >>
- [](const DrogonDbException &e) {
- std::cerr << e.base().what() << std::endl;
- exit(1);
- };
-}
-#endif
-
-#if USE_MYSQL
-void create_model::createModelClassFromMysql(
- const std::string &path,
- const DbClientPtr &client,
- const std::string &tableName,
- const Json::Value &restfulApiConfig,
- const std::vector &relationships,
- const std::vector &convertMethods)
-{
- auto className = nameTransform(tableName, true);
- HttpViewData data;
- data["className"] = className;
- data["tableName"] = toLower(tableName);
- data["hasPrimaryKey"] = (int)0;
- data["primaryKeyName"] = "";
- data["dbName"] = dbname_;
- data["rdbms"] = std::string("mysql");
- data["relationships"] = relationships;
- data["convertMethods"] = convertMethods;
- std::vector cols;
- int i = 0;
- *client << "desc " + tableName << Mode::Blocking >>
- [&i, &cols](bool isNull,
- const std::string &field,
- const std::string &type,
- const std::string &isNullAble,
- const std::string &key,
- const std::string &defaultVal,
- const std::string &extra) {
- if (!isNull)
- {
- ColumnInfo info;
- info.index_ = i;
- info.dbType_ = "mysql";
- info.colName_ = field;
- info.colTypeName_ = nameTransform(info.colName_, true);
- info.colValName_ = nameTransform(info.colName_, false);
- info.notNull_ = isNullAble == "YES" ? false : true;
- info.colDatabaseType_ = type;
- info.isPrimaryKey_ = key == "PRI" ? true : false;
- if (type.find("tinyint") == 0)
- {
- info.colType_ = "int8_t";
- info.colLength_ = 1;
- }
- else if (type.find("smallint") == 0)
- {
- info.colType_ = "int16_t";
- info.colLength_ = 2;
- }
- else if (type.find("mediumint") == 0)
- {
- info.colType_ = "int32_t";
- info.colLength_ = 3;
- }
- else if (type.find("int") == 0)
- {
- info.colType_ = "int32_t";
- info.colLength_ = 4;
- }
- else if (type.find("bigint") == 0)
- {
- info.colType_ = "int64_t";
- info.colLength_ = 8;
- }
- else if (type.find("float") == 0)
- {
- info.colType_ = "float";
- info.colLength_ = sizeof(float);
- }
- else if (type.find("double") == 0)
- {
- info.colType_ = "double";
- info.colLength_ = sizeof(double);
- }
- else if (type.find("date") == 0 || type.find("datetime") == 0 ||
- type.find("timestamp") == 0)
- {
- info.colType_ = "::trantor::Date";
- }
- else if (type.find("blob") != std::string::npos)
- {
- info.colType_ = "std::vector";
- }
- else if (type.find("varchar") != std::string::npos)
- {
- info.colType_ = "std::string";
- auto pos1 = type.find("(");
- auto pos2 = type.find(")");
- if (pos1 != std::string::npos &&
- pos2 != std::string::npos && pos2 - pos1 > 1)
- {
- info.colLength_ =
- std::stoll(type.substr(pos1 + 1, pos2 - pos1 - 1));
- }
- }
- else
- {
- info.colType_ = "std::string";
- }
- if (type.find("unsigned") != std::string::npos &&
- info.colType_ != "std::string")
- {
- info.colType_ = "u" + info.colType_;
- }
- if (!defaultVal.empty())
- {
- info.hasDefaultVal_ = true;
- }
- if (extra.find("auto_") == 0)
- {
- info.isAutoVal_ = true;
- }
- cols.push_back(std::move(info));
- ++i;
- }
- } >>
- [](const DrogonDbException &e) {
- std::cerr << e.base().what() << std::endl;
- exit(1);
- };
- std::vector pkNames, pkTypes, pkValNames;
- for (auto const &col : cols)
- {
- if (col.isPrimaryKey_)
- {
- pkNames.push_back(col.colName_);
- pkValNames.push_back(nameTransform(col.colName_, false));
- pkTypes.push_back(col.colType_);
- }
- }
- data["hasPrimaryKey"] = (int)pkNames.size();
- if (pkNames.size() == 1)
- {
- data["primaryKeyName"] = pkNames[0];
- data["primaryKeyType"] = pkTypes[0];
- }
- else if (pkNames.size() > 1)
- {
- data["primaryKeyName"] = pkNames;
- data["primaryKeyType"] = pkTypes;
- data["primaryKeyValNames"] = pkValNames;
- }
- data["columns"] = cols;
- std::ofstream headerFile(path + "/" + className + ".h", std::ofstream::out);
- std::ofstream sourceFile(path + "/" + className + ".cc",
- std::ofstream::out);
- auto templ = DrTemplateBase::newTemplate("model_h.csp");
- headerFile << templ->genText(data);
- templ = DrTemplateBase::newTemplate("model_cc.csp");
- sourceFile << templ->genText(data);
- createRestfulAPIController(data, restfulApiConfig);
-}
-void create_model::createModelFromMysql(
- const std::string &path,
- const DbClientPtr &client,
- const Json::Value &restfulApiConfig,
- std::map> &relationships,
- std::map> &convertMethods)
-{
- *client << "show tables" << Mode::Blocking >> [&](bool isNull,
- std::string &&tableName) {
- if (!isNull)
- {
- std::cout << "table name:" << tableName << std::endl;
- createModelClassFromMysql(path,
- client,
- tableName,
- restfulApiConfig,
- relationships[tableName],
- convertMethods[tableName]);
- }
- } >> [](const DrogonDbException &e) {
- std::cerr << e.base().what() << std::endl;
- exit(1);
- };
-}
-#endif
-#if USE_SQLITE3
-void create_model::createModelClassFromSqlite3(
- const std::string &path,
- const DbClientPtr &client,
- const std::string &tableName,
- const Json::Value &restfulApiConfig,
- const std::vector &relationships,
- const std::vector &convertMethods)
-{
- HttpViewData data;
- auto className = nameTransform(tableName, true);
- data["className"] = className;
- data["tableName"] = toLower(tableName);
- data["hasPrimaryKey"] = (int)0;
- data["primaryKeyName"] = "";
- data["dbName"] = std::string("sqlite3");
- data["rdbms"] = std::string("sqlite3");
- data["relationships"] = relationships;
- data["convertMethods"] = convertMethods;
- std::vector cols;
- std::string sql = "PRAGMA table_info(" + tableName + ");";
- *client << sql << Mode::Blocking >> [&](const Result &result) {
- size_t index = 0;
- for (auto &row : result)
- {
- bool notnull = row["notnull"].as();
- bool primary = row["pk"].as();
- auto type = row["type"].as();
- std::transform(type.begin(),
- type.end(),
- type.begin(),
- [](unsigned char c) { return tolower(c); });
- ColumnInfo info;
- info.index_ = index++;
- info.dbType_ = "sqlite3";
- info.colName_ = row["name"].as();
- info.colTypeName_ = nameTransform(info.colName_, true);
- info.colValName_ = nameTransform(info.colName_, false);
- info.notNull_ = notnull;
- info.colDatabaseType_ = type;
- info.isPrimaryKey_ = primary;
- if (primary)
- {
- if (type == "integer")
- {
- info.isAutoVal_ = true;
- }
- else
- {
- *client << "SELECT sql FROM sqlite_master WHERE name=? and "
- "(type='table' or type='view');"
- << tableName << Mode::Blocking >>
- [&](bool isNull, std::string sql) {
- if (!isNull)
- {
- std::transform(sql.begin(),
- sql.end(),
- sql.begin(),
- [](unsigned char c) {
- return tolower(c);
- });
- if (sql.find("autoincrement") !=
- std::string::npos)
- {
- info.isAutoVal_ = true;
- }
- }
- } >>
- [](const DrogonDbException &e) {
-
- };
- }
- }
- auto defaultVal = row["dflt_value"].as();
- if (!defaultVal.empty())
- {
- info.hasDefaultVal_ = true;
- }
-
- if (type.find("int") != std::string::npos)
- {
- info.colType_ = "uint64_t";
- info.colLength_ = 8;
- }
- else if (type.find("char") != std::string::npos || type == "text" ||
- type == "clob")
- {
- info.colType_ = "std::string";
- }
- else if (type.find("double") != std::string::npos ||
- type == "real" || type == "float")
- {
- info.colType_ = "double";
- info.colLength_ = sizeof(double);
- }
- else if (type == "bool")
- {
- info.colType_ = "bool";
- info.colLength_ = 1;
- }
- else if (type == "blob")
- {
- info.colType_ = "std::vector";
- }
- else if (type == "datetime" || type == "date")
- {
- info.colType_ = "::trantor::Date";
- }
- else
- {
- info.colType_ = "std::string";
- }
- cols.push_back(std::move(info));
- }
- } >> [](const DrogonDbException &e) {
- std::cerr << e.base().what() << std::endl;
- exit(1);
- };
- std::vector pkNames, pkTypes, pkValNames;
- for (auto const &col : cols)
- {
- if (col.isPrimaryKey_)
- {
- pkNames.push_back(col.colName_);
- pkTypes.push_back(col.colType_);
- pkValNames.push_back(nameTransform(col.colName_, false));
- }
- }
- data["hasPrimaryKey"] = (int)pkNames.size();
- if (pkNames.size() == 1)
- {
- data["primaryKeyName"] = pkNames[0];
- data["primaryKeyType"] = pkTypes[0];
- }
- else if (pkNames.size() > 1)
- {
- for (auto &col : cols)
- {
- col.isAutoVal_ = false;
- }
-
- data["primaryKeyName"] = pkNames;
- data["primaryKeyType"] = pkTypes;
- data["primaryKeyValNames"] = pkValNames;
- }
- data["columns"] = cols;
- std::ofstream headerFile(path + "/" + className + ".h", std::ofstream::out);
- std::ofstream sourceFile(path + "/" + className + ".cc",
- std::ofstream::out);
- auto templ = DrTemplateBase::newTemplate("model_h.csp");
- headerFile << templ->genText(data);
- templ = DrTemplateBase::newTemplate("model_cc.csp");
- sourceFile << templ->genText(data);
- createRestfulAPIController(data, restfulApiConfig);
-}
-
-void create_model::createModelFromSqlite3(
- const std::string &path,
- const DbClientPtr &client,
- const Json::Value &restfulApiConfig,
- std::map> &relationships,
- std::map> &convertMethods)
-{
- *client << "SELECT name FROM sqlite_master WHERE name!='sqlite_sequence' "
- "and (type='table' or type='view') ORDER BY name;"
- << Mode::Blocking >>
- [&](bool isNull, std::string &&tableName) mutable {
- if (!isNull)
- {
- std::cout << "table name:" << tableName << std::endl;
- createModelClassFromSqlite3(path,
- client,
- tableName,
- restfulApiConfig,
- relationships[tableName],
- convertMethods[tableName]);
- }
- } >>
- [](const DrogonDbException &e) {
- std::cerr << e.base().what() << std::endl;
- exit(1);
- };
-}
-#endif
-
-void create_model::createModel(const std::string &path,
- const Json::Value &config,
- const std::string &singleModelName)
-{
- auto dbType = config.get("rdbms", "no dbms").asString();
- std::transform(dbType.begin(),
- dbType.end(),
- dbType.begin(),
- [](unsigned char c) { return tolower(c); });
- auto restfulApiConfig = config["restful_api_controllers"];
- auto relationships = getRelationships(config["relationships"]);
- auto convertMethods = getConvertMethods(config["convert"]);
- if (dbType == "postgresql")
- {
-#if USE_POSTGRESQL
- std::cout << "postgresql" << std::endl;
- auto host = config.get("host", "127.0.0.1").asString();
- auto port = config.get("port", 5432).asUInt();
- auto dbname = config.get("dbname", "").asString();
- if (dbname == "")
- {
- std::cerr << "Please configure dbname in " << path << "/model.json "
- << std::endl;
- exit(1);
- }
- dbname_ = dbname;
- auto user = config.get("user", "").asString();
- if (user == "")
- {
- std::cerr << "Please configure user in " << path << "/model.json "
- << std::endl;
- exit(1);
- }
- auto password = config.get("passwd", "").asString();
- if (password.empty())
- {
- password = config.get("password", "").asString();
- }
-
- auto connStr =
- utils::formattedString("host=%s port=%u dbname=%s user=%s",
- escapeConnString(host).c_str(),
- port,
- escapeConnString(dbname).c_str(),
- escapeConnString(user).c_str());
- if (!password.empty())
- {
- connStr += " password=";
- connStr += escapeConnString(password);
- }
- auto characterSet = config.get("client_encoding", "").asString();
- if (!characterSet.empty())
- {
- connStr += " client_encoding=";
- connStr += escapeConnString(characterSet);
- }
-
- auto schema = config.get("schema", "public").asString();
- DbClientPtr client = drogon::orm::DbClient::newPgClient(connStr, 1);
- std::cout << "Connect to server..." << std::endl;
- if (forceOverwrite_)
- {
- std::this_thread::sleep_for(2s);
- }
- else
- {
- std::cout << "Source files in the " << path
- << " folder will be overwritten, continue(y/n)?\n";
- auto in = getchar();
- (void)getchar(); // get the return key
- if (in != 'Y' && in != 'y')
- {
- std::cout << "Abort!" << std::endl;
- exit(0);
- }
- }
-
- if (singleModelName.empty())
- {
- auto tables = config["tables"];
- if (!tables || tables.size() == 0)
- createModelFromPG(path,
- client,
- schema,
- restfulApiConfig,
- relationships,
- convertMethods);
- else
- {
- for (int i = 0; i < (int)tables.size(); ++i)
- {
- auto tableName = tables[i].asString();
- std::transform(tableName.begin(),
- tableName.end(),
- tableName.begin(),
- [](unsigned char c) { return tolower(c); });
- std::cout << "table name:" << tableName << std::endl;
- createModelClassFromPG(path,
- client,
- tableName,
- schema,
- restfulApiConfig,
- relationships[tableName],
- convertMethods[tableName]);
- }
- }
- }
- else
- {
- createModelClassFromPG(path,
- client,
- singleModelName,
- schema,
- restfulApiConfig,
- relationships[singleModelName],
- convertMethods[singleModelName]);
- }
-#else
- std::cerr
- << "Drogon does not support PostgreSQL, please install PostgreSQL "
- "development environment before installing drogon"
- << std::endl;
-#endif
- }
- else if (dbType == "mysql")
- {
-#if USE_MYSQL
- std::cout << "mysql" << std::endl;
- auto host = config.get("host", "127.0.0.1").asString();
- auto port = config.get("port", 5432).asUInt();
- auto dbname = config.get("dbname", "").asString();
- if (dbname == "")
- {
- std::cerr << "Please configure dbname in " << path << "/model.json "
- << std::endl;
- exit(1);
- }
- dbname_ = dbname;
- auto user = config.get("user", "").asString();
- if (user == "")
- {
- std::cerr << "Please configure user in " << path << "/model.json "
- << std::endl;
- exit(1);
- }
- auto password = config.get("passwd", "").asString();
- if (password.empty())
- {
- password = config.get("password", "").asString();
- }
-
- auto connStr =
- utils::formattedString("host=%s port=%u dbname=%s user=%s",
- escapeConnString(host).c_str(),
- port,
- escapeConnString(dbname).c_str(),
- escapeConnString(user).c_str());
- if (!password.empty())
- {
- connStr += " password=";
- connStr += escapeConnString(password);
- }
- auto characterSet = config.get("client_encoding", "").asString();
- if (!characterSet.empty())
- {
- connStr += " client_encoding=";
- connStr += escapeConnString(characterSet);
- }
- DbClientPtr client = drogon::orm::DbClient::newMysqlClient(connStr, 1);
- std::cout << "Connect to server..." << std::endl;
- if (forceOverwrite_)
- {
- std::this_thread::sleep_for(2s);
- }
- else
- {
- std::cout << "Source files in the " << path
- << " folder will be overwritten, continue(y/n)?\n";
- auto in = getchar();
- (void)getchar(); // get the return key
- if (in != 'Y' && in != 'y')
- {
- std::cout << "Abort!" << std::endl;
- exit(0);
- }
- }
-
- if (singleModelName.empty())
- {
- auto tables = config["tables"];
- if (!tables || tables.size() == 0)
- createModelFromMysql(path,
- client,
- restfulApiConfig,
- relationships,
- convertMethods);
- else
- {
- for (int i = 0; i < (int)tables.size(); ++i)
- {
- auto tableName = tables[i].asString();
- std::transform(tableName.begin(),
- tableName.end(),
- tableName.begin(),
- [](unsigned char c) { return tolower(c); });
- std::cout << "table name:" << tableName << std::endl;
- createModelClassFromMysql(path,
- client,
- tableName,
- restfulApiConfig,
- relationships[tableName],
- convertMethods[tableName]);
- }
- }
- }
- else
- {
- createModelClassFromMysql(path,
- client,
- singleModelName,
- restfulApiConfig,
- relationships[singleModelName],
- convertMethods[singleModelName]);
- }
-
-#else
- std::cerr << "Drogon does not support Mysql, please install MariaDB "
- "development environment before installing drogon"
- << std::endl;
-#endif
- }
- else if (dbType == "sqlite3")
- {
-#if USE_SQLITE3
- auto filename = config.get("filename", "").asString();
- if (filename == "")
- {
- std::cerr << "Please configure filename in " << path
- << "/model.json " << std::endl;
- exit(1);
- }
- std::string connStr = "filename=" + escapeConnString(filename);
- DbClientPtr client =
- drogon::orm::DbClient::newSqlite3Client(connStr, 1);
- std::cout << "Connect..." << std::endl;
- if (forceOverwrite_)
- {
- std::this_thread::sleep_for(1s);
- }
- else
- {
- std::cout << "Source files in the " << path
- << " folder will be overwritten, continue(y/n)?\n";
- auto in = getchar();
- (void)getchar(); // get the return key
- if (in != 'Y' && in != 'y')
- {
- std::cout << "Abort!" << std::endl;
- exit(0);
- }
- }
-
- if (singleModelName.empty())
- {
- auto tables = config["tables"];
- if (!tables || tables.size() == 0)
- createModelFromSqlite3(path,
- client,
- restfulApiConfig,
- relationships,
- convertMethods);
- else
- {
- for (int i = 0; i < (int)tables.size(); ++i)
- {
- auto tableName = tables[i].asString();
- std::transform(tableName.begin(),
- tableName.end(),
- tableName.begin(),
- [](unsigned char c) { return tolower(c); });
- std::cout << "table name:" << tableName << std::endl;
- createModelClassFromSqlite3(path,
- client,
- tableName,
- restfulApiConfig,
- relationships[tableName],
- convertMethods[tableName]);
- }
- }
- }
- else
- {
- createModelClassFromSqlite3(path,
- client,
- singleModelName,
- restfulApiConfig,
- relationships[singleModelName],
- convertMethods[singleModelName]);
- }
-
-#else
- std::cerr << "Drogon does not support Sqlite3, please install Sqlite3 "
- "development environment before installing drogon"
- << std::endl;
-#endif
- }
- else if (dbType == "no dbms")
- {
- std::cerr << "Please configure Model in " << path << "/model.json "
- << std::endl;
- exit(1);
- }
- else
- {
- std::cerr << "Does not support " << dbType << std::endl;
- exit(1);
- }
-}
-void create_model::createModel(const std::string &path,
- const std::string &singleModelName)
-{
-#ifndef _WIN32
- DIR *dp;
- if ((dp = opendir(path.c_str())) == NULL)
- {
- std::cerr << "No such file or directory : " << path << std::endl;
- return;
- }
- closedir(dp);
-#endif
- auto configFile = path + "/model.json";
-#ifdef _WIN32
- if (_access(configFile.c_str(), 0) != 0)
-#else
- if (access(configFile.c_str(), 0) != 0)
-#endif
- {
- std::cerr << "Config file " << configFile << " not found!" << std::endl;
- exit(1);
- }
-#ifdef _WIN32
- if (_access(configFile.c_str(), 04) != 0)
-#else
- if (access(configFile.c_str(), R_OK) != 0)
-#endif
- {
- std::cerr << "No permission to read config file " << configFile
- << std::endl;
- exit(1);
- }
-
- std::ifstream infile(configFile.c_str(), std::ifstream::in);
- if (infile)
- {
- Json::Value configJsonRoot;
- try
- {
- infile >> configJsonRoot;
- createModel(path, configJsonRoot, singleModelName);
- }
- catch (const std::exception &exception)
- {
- std::cerr << "Configuration file format error! in " << configFile
- << ":" << std::endl;
- std::cerr << exception.what() << std::endl;
- exit(1);
- }
- }
-}
-
-void create_model::handleCommand(std::vector ¶meters)
-{
- std::cout << "Create model" << std::endl;
- if (parameters.size() == 0)
- {
- std::cerr << "Missing Model path name!" << std::endl;
- }
- std::string singleModelName;
- for (auto iter = parameters.begin(); iter != parameters.end(); ++iter)
- {
- if ((*iter).find("--table=") == 0)
- {
- singleModelName = (*iter).substr(8);
- parameters.erase(iter);
- break;
- }
- }
- for (auto iter = parameters.begin(); iter != parameters.end(); ++iter)
- {
- if ((*iter) == "-f")
- {
- forceOverwrite_ = true;
- parameters.erase(iter);
- break;
- }
- }
- for (auto const &path : parameters)
- {
- createModel(path, singleModelName);
- }
-}
-
-void create_model::createRestfulAPIController(
- const DrTemplateData &tableInfo,
- const Json::Value &restfulApiConfig)
-{
- if (restfulApiConfig.isNull())
- return;
- if (!restfulApiConfig.get("enabled", false).asBool())
- {
- return;
- }
- auto genBaseOnly =
- restfulApiConfig.get("generate_base_only", false).asBool();
- auto modelClassName = tableInfo.get("className");
- std::regex regex("\\*");
- auto resource = std::regex_replace(
- restfulApiConfig.get("resource_uri", "/*").asString(),
- regex,
- modelClassName);
- std::transform(resource.begin(),
- resource.end(),
- resource.begin(),
- [](unsigned char c) { return tolower(c); });
- auto ctrlClassName =
- std::regex_replace(restfulApiConfig.get("class_name", "/*").asString(),
- regex,
- modelClassName);
- std::regex regex1("::");
- std::string ctlName =
- std::regex_replace(ctrlClassName, regex1, std::string("_"));
- auto v = utils::splitString(ctrlClassName, "::");
-
- drogon::DrTemplateData data;
- data.insert("className", v[v.size() - 1]);
- v.pop_back();
- data.insert("namespaceVector", v);
- data.insert("resource", resource);
- data.insert("fileName", ctlName);
- data.insert("tableName", tableInfo.get("tableName"));
- data.insert("tableInfo", tableInfo);
- auto filters = restfulApiConfig["filters"];
- if (filters.isNull() || filters.empty() || !filters.isArray())
- {
- data.insert("filters", "");
- }
- else
- {
- std::string filtersStr;
- for (auto &filterName : filters)
- {
- filtersStr += ",\"";
- filtersStr.append(filterName.asString());
- filtersStr += '"';
- }
- data.insert("filters", filtersStr);
- }
- auto dbClientConfig = restfulApiConfig["db_client"];
- if (dbClientConfig.isNull() || dbClientConfig.empty())
- {
- data.insertAsString("dbClientName", "default");
- data.insert("isFastDbClient", false);
- }
- else
- {
- auto clientName = dbClientConfig.get("name", "default").asString();
- auto isFast = dbClientConfig.get("is_fast", false).asBool();
- data.insertAsString("dbClientName", clientName);
- data.insert("isFastDbClient", isFast);
- }
- auto dir = restfulApiConfig.get("directory", "controllers").asString();
- if (dir[dir.length() - 1] != '/')
- {
- dir += '/';
- }
- {
- std::string headFileName = dir + ctlName + "Base.h";
- std::string sourceFilename = dir + ctlName + "Base.cc";
- // {
- // std::ifstream iHeadFile(headFileName.c_str(), std::ifstream::in);
- // std::ifstream iSourceFile(sourceFilename.c_str(),
- // std::ifstream::in);
-
- // if (iHeadFile || iSourceFile)
- // {
- // std::cout << "The " << headFileName << " and " <<
- // sourceFilename
- // << " you want to create already exist, "
- // "overwrite it(y/n)?"
- // << std::endl;
- // auto in = getchar();
- // (void)getchar(); // get the return key
- // if (in != 'Y' && in != 'y')
- // {
- // std::cout << "Abort!" << std::endl;
- // exit(0);
- // }
- // }
- // }
- std::ofstream oHeadFile(headFileName.c_str(), std::ofstream::out);
- std::ofstream oSourceFile(sourceFilename.c_str(), std::ofstream::out);
- if (!oHeadFile || !oSourceFile)
- {
- perror("");
- exit(1);
- }
- try
- {
- auto templ =
- DrTemplateBase::newTemplate("restful_controller_base_h.csp");
- oHeadFile << templ->genText(data);
- templ =
- DrTemplateBase::newTemplate("restful_controller_base_cc.csp");
- oSourceFile << templ->genText(data);
- }
- catch (const std::exception &err)
- {
- std::cerr << err.what() << std::endl;
- exit(1);
- }
- std::cout << "create a http restful API controller base class:"
- << ctrlClassName << "Base" << std::endl;
- std::cout << "file name: " << headFileName << ", " << sourceFilename
- << std::endl
- << std::endl;
- }
- if (!genBaseOnly)
- {
- std::string headFileName = dir + ctlName + ".h";
- std::string sourceFilename = dir + ctlName + ".cc";
- if (!forceOverwrite_)
- {
- std::ifstream iHeadFile(headFileName.c_str(), std::ifstream::in);
- std::ifstream iSourceFile(sourceFilename.c_str(),
- std::ifstream::in);
-
- if (iHeadFile || iSourceFile)
- {
- std::cout << "The " << headFileName << " and " << sourceFilename
- << " you want to create already exist, "
- "overwrite them(y/n)?"
- << std::endl;
- auto in = getchar();
- (void)getchar(); // get the return key
- if (in != 'Y' && in != 'y')
- {
- std::cout << "Abort!" << std::endl;
- exit(0);
- }
- }
- }
- std::ofstream oHeadFile(headFileName.c_str(), std::ofstream::out);
- std::ofstream oSourceFile(sourceFilename.c_str(), std::ofstream::out);
- if (!oHeadFile || !oSourceFile)
- {
- perror("");
- exit(1);
- }
- try
- {
- auto templ =
- DrTemplateBase::newTemplate("restful_controller_custom_h.csp");
- oHeadFile << templ->genText(data);
- templ =
- DrTemplateBase::newTemplate("restful_controller_custom_cc.csp");
- oSourceFile << templ->genText(data);
- }
- catch (const std::exception &err)
- {
- std::cerr << err.what() << std::endl;
- exit(1);
- }
-
- std::cout << "create a http restful API controller class: "
- << ctrlClassName << std::endl;
- std::cout << "file name: " << headFileName << ", " << sourceFilename
- << std::endl
- << std::endl;
- }
-}
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_model.h b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_model.h
deleted file mode 100644
index dfdf088eee8f..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_model.h
+++ /dev/null
@@ -1,405 +0,0 @@
-/**
- *
- * create_model.h
- * An Tao
- *
- * Copyright 2018, An Tao. All rights reserved.
- * https://github.com/an-tao/drogon
- * Use of this source code is governed by a MIT license
- * that can be found in the License file.
- *
- * Drogon
- *
- */
-
-#pragma once
-
-#include
-#include
-#include
-#include
-using namespace drogon::orm;
-#include
-#include "CommandHandler.h"
-#include
-#include
-
-using namespace drogon;
-
-namespace drogon_ctl
-{
-struct ColumnInfo
-{
- std::string colName_;
- std::string colValName_;
- std::string colTypeName_;
- std::string colType_;
- std::string colDatabaseType_;
- std::string dbType_;
- ssize_t colLength_{0};
- size_t index_{0};
- bool isAutoVal_{false};
- bool isPrimaryKey_{false};
- bool notNull_{false};
- bool hasDefaultVal_{false};
-};
-
-inline std::string nameTransform(const std::string &origName, bool isType)
-{
- auto str = origName;
- std::transform(str.begin(), str.end(), str.begin(), [](unsigned char c) {
- return tolower(c);
- });
- std::string::size_type startPos = 0;
- std::string::size_type pos;
- std::string ret;
- do
- {
- pos = str.find("_", startPos);
- if (pos == std::string::npos)
- {
- pos = str.find(".", startPos);
- }
- if (pos != std::string::npos)
- ret += str.substr(startPos, pos - startPos);
- else
- {
- ret += str.substr(startPos);
- break;
- }
- while (str[pos] == '_' || str[pos] == '.')
- ++pos;
- if (str[pos] >= 'a' && str[pos] <= 'z')
- str[pos] += ('A' - 'a');
- startPos = pos;
- } while (1);
- if (isType && ret[0] >= 'a' && ret[0] <= 'z')
- ret[0] += ('A' - 'a');
- return ret;
-}
-class PivotTable
-{
- public:
- PivotTable() = default;
- PivotTable(const Json::Value &json)
- : tableName_(json.get("table_name", "").asString())
- {
- if (tableName_.empty())
- {
- throw std::runtime_error("table_name can't be empty");
- }
- originalKey_ = json.get("original_key", "").asString();
- if (originalKey_.empty())
- {
- throw std::runtime_error("original_key can't be empty");
- }
- targetKey_ = json.get("target_key", "").asString();
- if (targetKey_.empty())
- {
- throw std::runtime_error("target_key can't be empty");
- }
- }
- PivotTable reverse() const
- {
- PivotTable pivot;
- pivot.tableName_ = tableName_;
- pivot.originalKey_ = targetKey_;
- pivot.targetKey_ = originalKey_;
- return pivot;
- }
- const std::string &tableName() const
- {
- return tableName_;
- }
- const std::string &originalKey() const
- {
- return originalKey_;
- }
- const std::string &targetKey() const
- {
- return targetKey_;
- }
-
- private:
- std::string tableName_;
- std::string originalKey_;
- std::string targetKey_;
-};
-
-class ConvertMethod
-{
- public:
- ConvertMethod(const Json::Value &convert)
- {
- tableName_ = convert.get("table", "*").asString();
- colName_ = convert.get("column", "*").asString();
-
- auto method = convert["method"];
- if (method.isNull())
- {
- throw std::runtime_error("method - object is missing.");
- } // endif
- if (!method.isObject())
- {
- throw std::runtime_error("method is not an object.");
- } // endif
- methodBeforeDbWrite_ = method.get("before_db_write", "").asString();
- methodAfterDbRead_ = method.get("after_db_read", "").asString();
-
- auto includeFiles = convert["includes"];
- if (includeFiles.isNull())
- {
- return;
- } // endif
- if (!includeFiles.isArray())
- {
- throw std::runtime_error("includes must be an array");
- } // endif
- for (auto &i : includeFiles)
- {
- includeFiles_.push_back(i.asString());
- } // for
- }
- ConvertMethod() = default;
-
- bool shouldConvert(const std::string &tableName,
- const std::string &colName) const;
-
- const std::string &tableName() const
- {
- return tableName_;
- }
- const std::string &colName() const
- {
- return colName_;
- }
- const std::string &methodBeforeDbWrite() const
- {
- return methodBeforeDbWrite_;
- }
- const std::string &methodAfterDbRead() const
- {
- return methodAfterDbRead_;
- }
- const std::vector &includeFiles() const
- {
- return includeFiles_;
- }
-
- private:
- std::string tableName_{"*"};
- std::string colName_{"*"};
- std::string methodBeforeDbWrite_;
- std::string methodAfterDbRead_;
- std::vector includeFiles_;
-};
-
-class Relationship
-{
- public:
- enum class Type
- {
- HasOne,
- HasMany,
- ManyToMany
- };
- Relationship(const Json::Value &relationship)
- {
- auto type = relationship.get("type", "has one").asString();
- if (type == "has one")
- {
- type_ = Relationship::Type::HasOne;
- }
- else if (type == "has many")
- {
- type_ = Relationship::Type::HasMany;
- }
- else if (type == "many to many")
- {
- type_ = Relationship::Type::ManyToMany;
- }
- else
- {
- char message[128];
- snprintf(message,
- sizeof(message),
- "Invalid relationship type: %s",
- type.data());
- throw std::runtime_error(message);
- }
- originalTableName_ =
- relationship.get("original_table_name", "").asString();
- if (originalTableName_.empty())
- {
- throw std::runtime_error("original_table_name can't be empty");
- }
- originalKey_ = relationship.get("original_key", "").asString();
- if (originalKey_.empty())
- {
- throw std::runtime_error("original_key can't be empty");
- }
- originalTableAlias_ =
- relationship.get("original_table_alias", "").asString();
- targetTableName_ = relationship.get("target_table_name", "").asString();
- if (targetTableName_.empty())
- {
- throw std::runtime_error("target_table_name can't be empty");
- }
- targetKey_ = relationship.get("target_key", "").asString();
- if (targetKey_.empty())
- {
- throw std::runtime_error("target_key can't be empty");
- }
- targetTableAlias_ =
- relationship.get("target_table_alias", "").asString();
- enableReverse_ = relationship.get("enable_reverse", false).asBool();
- if (type_ == Type::ManyToMany)
- {
- auto &pivot = relationship["pivot_table"];
- if (pivot.isNull())
- {
- throw std::runtime_error(
- "ManyToMany relationship needs a pivot table");
- }
- pivotTable_ = PivotTable(pivot);
- }
- }
- Relationship() = default;
- Relationship reverse() const
- {
- Relationship r;
- if (type_ == Type::HasMany)
- {
- r.type_ = Type::HasOne;
- }
- else
- {
- r.type_ = type_;
- }
- r.originalTableName_ = targetTableName_;
- r.originalTableAlias_ = targetTableAlias_;
- r.originalKey_ = targetKey_;
- r.targetTableName_ = originalTableName_;
- r.targetTableAlias_ = originalTableAlias_;
- r.targetKey_ = originalKey_;
- r.enableReverse_ = enableReverse_;
- r.pivotTable_ = pivotTable_.reverse();
- return r;
- }
- Type type() const
- {
- return type_;
- }
- bool enableReverse() const
- {
- return enableReverse_;
- }
- const std::string &originalTableName() const
- {
- return originalTableName_;
- }
- const std::string &originalTableAlias() const
- {
- return originalTableAlias_;
- }
- const std::string &originalKey() const
- {
- return originalKey_;
- }
- const std::string &targetTableName() const
- {
- return targetTableName_;
- }
- const std::string &targetTableAlias() const
- {
- return targetTableAlias_;
- }
- const std::string &targetKey() const
- {
- return targetKey_;
- }
- const PivotTable &pivotTable() const
- {
- return pivotTable_;
- }
-
- private:
- Type type_{Type::HasOne};
- std::string originalTableName_;
- std::string originalTableAlias_;
- std::string targetTableName_;
- std::string targetTableAlias_;
- std::string originalKey_;
- std::string targetKey_;
- bool enableReverse_{false};
- PivotTable pivotTable_;
-};
-class create_model : public DrObject, public CommandHandler
-{
- public:
- void handleCommand(std::vector ¶meters) override;
- std::string script() override
- {
- return "create Model classes files";
- }
-
- protected:
- void createModel(const std::string &path,
- const std::string &singleModelName);
- void createModel(const std::string &path,
- const Json::Value &config,
- const std::string &singleModelName);
-#if USE_POSTGRESQL
- void createModelClassFromPG(
- const std::string &path,
- const DbClientPtr &client,
- const std::string &tableName,
- const std::string &schema,
- const Json::Value &restfulApiConfig,
- const std::vector &relationships,
- const std::vector &convertMethods);
-
- void createModelFromPG(
- const std::string &path,
- const DbClientPtr &client,
- const std::string &schema,
- const Json::Value &restfulApiConfig,
- std::map> &relationships,
- std::map> &convertMethods);
-#endif
-#if USE_MYSQL
- void createModelClassFromMysql(
- const std::string &path,
- const DbClientPtr &client,
- const std::string &tableName,
- const Json::Value &restfulApiConfig,
- const std::vector &relationships,
- const std::vector &convertMethods);
- void createModelFromMysql(
- const std::string &path,
- const DbClientPtr &client,
- const Json::Value &restfulApiConfig,
- std::map> &relationships,
- std::map> &convertMethods);
-#endif
-#if USE_SQLITE3
- void createModelClassFromSqlite3(
- const std::string &path,
- const DbClientPtr &client,
- const std::string &tableName,
- const Json::Value &restfulApiConfig,
- const std::vector &relationships,
- const std::vector &convertMethod);
- void createModelFromSqlite3(
- const std::string &path,
- const DbClientPtr &client,
- const Json::Value &restfulApiConfig,
- std::map> &relationships,
- std::map> &convertMethod);
-#endif
- void createRestfulAPIController(const DrTemplateData &tableInfo,
- const Json::Value &restfulApiConfig);
- std::string dbname_;
- bool forceOverwrite_{false};
-};
-} // namespace drogon_ctl
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_plugin.cc b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_plugin.cc
deleted file mode 100644
index 4d4f4ce221de..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_plugin.cc
+++ /dev/null
@@ -1,117 +0,0 @@
-/**
- *
- * create_plugin.cc
- * An Tao
- *
- * Copyright 2018, An Tao. All rights reserved.
- * https://github.com/an-tao/drogon
- * Use of this source code is governed by a MIT license
- * that can be found in the License file.
- *
- * Drogon
- *
- */
-
-#include "create_plugin.h"
-#include
-#include
-
-#include
-#include
-#ifndef _WIN32
-#include
-#endif
-#include
-#include
-
-#include
-#include
-
-using namespace drogon_ctl;
-
-static void createPluginHeaderFile(std::ofstream &file,
- const std::string &className,
- const std::string &fileName)
-{
- auto templ = drogon::DrTemplateBase::newTemplate("plugin_h");
- HttpViewData data;
- if (className.find("::") != std::string::npos)
- {
- auto namespaceVector = utils::splitString(className, "::");
- data.insert("className", namespaceVector.back());
- namespaceVector.pop_back();
- data.insert("namespaceVector", namespaceVector);
- }
- else
- {
- data.insert("className", className);
- }
- data.insert("filename", fileName);
- file << templ->genText(data);
-}
-
-static void createPluginSourceFile(std::ofstream &file,
- const std::string &className,
- const std::string &fileName)
-{
- auto templ = drogon::DrTemplateBase::newTemplate("plugin_cc");
- HttpViewData data;
- if (className.find("::") != std::string::npos)
- {
- auto pos = className.rfind("::");
- data.insert("namespaceString", className.substr(0, pos));
- data.insert("className", className.substr(pos + 2));
- }
- else
- {
- data.insert("className", className);
- }
- data.insert("filename", fileName);
- file << templ->genText(data);
-}
-void create_plugin::handleCommand(std::vector ¶meters)
-{
- if (parameters.size() < 1)
- {
- std::cout << "Invalid parameters!" << std::endl;
- }
- for (auto className : parameters)
- {
- std::regex regex("::");
- std::string fileName =
- std::regex_replace(className, regex, std::string("_"));
-
- std::string headFileName = fileName + ".h";
- std::string sourceFilename = fileName + ".cc";
- {
- std::ifstream iHeadFile(headFileName.c_str(), std::ifstream::in);
- std::ifstream iSourceFile(sourceFilename.c_str(),
- std::ifstream::in);
-
- if (iHeadFile || iSourceFile)
- {
- std::cout << "The file you want to create already exists, "
- "overwrite it(y/n)?"
- << std::endl;
- auto in = getchar();
- (void)getchar(); // get the return key
- if (in != 'Y' && in != 'y')
- {
- std::cout << "Abort!" << std::endl;
- exit(0);
- }
- }
- }
- std::ofstream oHeadFile(headFileName.c_str(), std::ofstream::out);
- std::ofstream oSourceFile(sourceFilename.c_str(), std::ofstream::out);
- if (!oHeadFile || !oSourceFile)
- {
- perror("");
- exit(1);
- }
-
- std::cout << "create a plugin:" << className << std::endl;
- createPluginHeaderFile(oHeadFile, className, fileName);
- createPluginSourceFile(oSourceFile, className, fileName);
- }
-}
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_plugin.h b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_plugin.h
deleted file mode 100644
index c16d3efe8033..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_plugin.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- *
- * create_plugin.h
- * An Tao
- *
- * Copyright 2018, An Tao. All rights reserved.
- * https://github.com/an-tao/drogon
- * Use of this source code is governed by a MIT license
- * that can be found in the License file.
- *
- * Drogon
- *
- */
-
-#pragma once
-
-#include
-#include "CommandHandler.h"
-using namespace drogon;
-namespace drogon_ctl
-{
-class create_plugin : public DrObject, public CommandHandler
-{
- public:
- void handleCommand(std::vector ¶meters) override;
- std::string script() override
- {
- return "create plugin class files";
- }
-
- protected:
- std::string outputPath_{"."};
-};
-} // namespace drogon_ctl
diff --git a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_project.cc b/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_project.cc
deleted file mode 100644
index 4f24200707c6..000000000000
--- a/storage/ndb/rest-server2/extra/drogon/drogon-1.8.7/drogon_ctl/create_project.cc
+++ /dev/null
@@ -1,135 +0,0 @@
-/**
- *
- * create_project.cc
- * An Tao
- *
- * Copyright 2018, An Tao. All rights reserved.
- * https://github.com/an-tao/drogon
- * Use of this source code is governed by a MIT license
- * that can be found in the License file.
- *
- * Drogon
- *
- */
-
-#include "create_project.h"
-#include
-#include