project(Mozart)
cmake_minimum_required(VERSION 3.14)
cmake_policy(SET CMP0015 NEW)
if(POLICY CMP0074)
cmake_policy(SET CMP0074 NEW)
endif()
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Debug)
endif()
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
add_custom_target(fetch_packages)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP")
add_definitions(-DNOMINMAX)
add_definitions(-DCOMMIT="${GIT_COMMIT_HASH}")
if(ENABLE_ASAN)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer -fsanitize=address,undefined")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fno-omit-frame-pointer -fsanitize=address,undefined")
endif()
if(ENABLE_TSAN)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer -fsanitize=thread")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fno-omit-frame-pointer -fsanitize=thread")
endif()
include(GitRevision)
include(FetchContent)
# Open source libraries
find_package(Boost REQUIRED)
find_package(Git REQUIRED)
find_package(Drogon REQUIRED)
include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
include_directories(SYSTEM ${json_INCLUDE_DIR})
include_directories(SYSTEM ${CMAKE_BINARY_DIR})
link_directories(${Boost_LIBRARY_DIRS})
link_directories(${Boost_LIBRARIES})
add_subdirectory(src)
include(cmake/Docker.cmake)
Hello
Is it possible to define PATH_ADD with regular expression on input path (as regex-pattern)?
suppose that I wanna create a dynamicFileLoaderCtrl which can load files, So it can send response to client dynamically!
I don't want bind some specific static URLs in my controller!
and it must load the ordered file if it exists, otherwise it must callback error 404!
just I wanna know regex on PATH_ADD possibility!
PATH_ADD_VIA_REGEX("/*.*",Get,Post);
//get request info & load & send file to client
Thanks A Lot...
All The Best,
Hadi
DROGON_ROUTE("/parent/child1", functionBind1, "auth")
DROGON_ROUTE("/parent/child2", functionBind2, "auth")
ADD_METHOD_TO(PageCtrl::RootRout,"",{Get , Post , Put , Patch , Delete , Head});
ADD_METHOD_TO(PageCtrl::RootRout,"/",{Get , Post , Put , Patch , Delete , Head});
METHOD_ADD(PageCtrl::RootRout,"",{Get , Post , Put , Patch , Delete , Head});
METHOD_ADD(PageCtrl::RootRout,"/",{Get , Post , Put , Patch , Delete , Head});
new
but it seg faults upon deletion.
Hi @an-tao
Is it possible to remove or change content-length or content-type of response as we need to test the caching of our cnd (made by nginx)?
In other words, I need to check the caching of my CDN for the while that there is no any cache-length on response headers and the origin server is drogon as there is no any limitation on (add/edit/remove headers on) it!
removeHeader method was not able to remove content-length!
I know that removing some headers like Content-Length can be dangerous but is there any solution for my problem?
All The Best,
Hadi
currently you can't do that, you need to change drogon code to achieve that.
Apologies if this has already been answered somewhere. If I wanted to do a soft restart (without killing the parent process) of an application using Drogon, how might I cleanly resume Drogon?
There is no API of drogon to do that, you have to change drogon code to achieve that. please refer to the run() method of drogon::app().
Hello. I create controller by command: drogon_ctl create controller PingController:
PingController.h:
#pragma once
#include <drogon/HttpSimpleController.h>
using namespace drogon;
class PingController : public drogon::HttpSimpleController<PingController>
{
public:
virtual void asyncHandleHttpRequest(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback) override;
PATH_LIST_BEGIN
PATH_ADD("/PING", Get);
PATH_LIST_END
};
PingController.c:
#include "PingController.h"
void PingController::asyncHandleHttpRequest(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback)
{
// write your application logic here
auto resp = HttpResponse::newHttpResponse();
resp->setStatusCode(k200OK);
resp->setContentTypeCode(CT_TEXT_HTML);
resp->setBody("PONG");
callback(resp);
}
but when I try to call http://localhost/PING i get 404 Not Found
LOG_TRACE << "log body";
I desire above line results a line in the log file but it doesn't.
why?
( I have set the log option correctly and I run the app in the Debug mode and others log have written to log file properly.)
ADD_METHOD_TO(Ctrl::handleSome, "/path/to/handler", "filter1","filter2","filter3");
It is possible with METHOD_ADD to chain filters?