Merge pull request #556 from soehrl/feature/fix-websocket-route-macro

Adapt CROW_WEBSOCKET_ROUTE to accept app reference
This commit is contained in:
Farook Al-Sammarraie 2022-12-11 14:35:15 +03:00 committed by GitHub
commit cae4d3e498
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 43 additions and 1 deletions

View File

@ -30,7 +30,7 @@
#else
#define CROW_ROUTE(app, url) app.template route<crow::black_magic::get_parameter_tag(url)>(url)
#define CROW_BP_ROUTE(blueprint, url) blueprint.new_rule_tagged<crow::black_magic::get_parameter_tag(url)>(url)
#define CROW_WEBSOCKET_ROUTE(app, url) app.route<crow::black_magic::get_parameter_tag(url)>(url).websocket<decltype(app)>(&app)
#define CROW_WEBSOCKET_ROUTE(app, url) app.route<crow::black_magic::get_parameter_tag(url)>(url).websocket<std::remove_reference<decltype(app)>::type>(&app)
#define CROW_MIDDLEWARES(app, ...) template middlewares<typename std::remove_reference<decltype(app)>::type, __VA_ARGS__>()
#endif
#define CROW_CATCHALL_ROUTE(app) app.catchall_route()

View File

@ -18,6 +18,7 @@ endif()
add_subdirectory(template)
add_subdirectory(multi_file)
add_subdirectory(external_definition)
if ("ssl" IN_LIST CROW_FEATURES)
add_subdirectory(ssl)
endif()

View File

@ -0,0 +1,16 @@
project(test_external_definition)
add_executable(
${PROJECT_NAME}
main.cpp
)
target_include_directories(
${PROJECT_NAME}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
)
target_link_libraries(
${PROJECT_NAME}
PUBLIC Crow::Crow
)

View File

@ -0,0 +1,25 @@
// Testing whether crow routes can be defined in an external function.
#include "crow.h"
void define_endpoints(crow::SimpleApp& app)
{
CROW_ROUTE(app, "/")
([]() {
return "Hello, world!";
});
CROW_WEBSOCKET_ROUTE(app, "/ws")
.onaccept([&](const crow::request&, void**) {
return true;
})
.onopen([](crow::websocket::connection&) {})
.onclose([](crow::websocket::connection&, const std::string&) {});
}
int main()
{
crow::SimpleApp app;
define_endpoints(app);
app.port(18080).run();
}