21#include <trantor/utils/Logger.h>
27#define WS_PATH_LIST_BEGIN \
28 static void initPathRouting() \
30#define WS_PATH_ADD(path, ...) registerSelf__(path, {__VA_ARGS__})
31#define WS_ADD_PATH_VIA_REGEX(regExp, ...) \
32 registerSelfRegex__(regExp, {__VA_ARGS__})
33#define WS_PATH_LIST_END }
45 virtual void handleNewMessage(
const WebSocketConnectionPtr &,
47 const WebSocketMessageType &) = 0;
51 virtual void handleNewConnection(
const HttpRequestPtr &,
52 const WebSocketConnectionPtr &) = 0;
55 virtual void handleConnectionClosed(
const WebSocketConnectionPtr &) = 0;
62using WebSocketControllerBasePtr = std::shared_ptr<WebSocketControllerBase>;
71template <
typename T,
bool AutoCreation = true>
75 static const bool isAutoCreation = AutoCreation;
77 virtual ~WebSocketController()
86 static void registerSelf__(
87 const std::string &path,
88 const std::vector<internal::HttpConstraint> &constraints)
90 LOG_TRACE <<
"register websocket controller("
91 << WebSocketController<T, AutoCreation>::classTypeName()
92 <<
") on path:" << path;
95 WebSocketController<T, AutoCreation>::classTypeName(),
99 static void registerSelfRegex__(
100 const std::string ®Exp,
101 const std::vector<internal::HttpConstraint> &constraints)
103 LOG_TRACE <<
"register websocket controller("
104 << WebSocketController<T, AutoCreation>::classTypeName()
105 <<
") on regExp:" << regExp;
108 WebSocketController<T, AutoCreation>::classTypeName(),
113 class pathRegistrator
120 T::initPathRouting();
125 friend pathRegistrator;
126 static pathRegistrator registrator_;
128 virtual void *touch()
130 return ®istrator_;
134template <
typename T,
bool AutoCreation>
135typename WebSocketController<T, AutoCreation>::pathRegistrator
136 WebSocketController<T, AutoCreation>::registrator_;
The base class for all drogon reflection classes.
Definition DrObject.h:34
virtual HttpAppFramework & registerWebSocketController(const std::string &pathName, const std::string &ctrlName, const std::vector< internal::HttpConstraint > &constraints={})=0
Register a WebSocketController into the framework.
virtual HttpAppFramework & registerWebSocketControllerRegex(const std::string ®Exp, const std::string &ctrlName, const std::vector< internal::HttpConstraint > &constraints=std::vector< internal::HttpConstraint >{})=0
Register a WebSocketController into the framework.
The abstract base class for WebSocket controllers.
Definition WebSocketController.h:42
Drogon Test is a minimal effort test framework developed because the major C++ test frameworks doesn'...
Definition Attribute.h:23
HttpAppFramework & app()
A wrapper of the instance() method.
Definition HttpAppFramework.h:1656