Expose payload to ping/pong events

This commit is contained in:
Alex Hultman
2021-02-26 01:32:06 +01:00
parent 649567d498
commit 8089063504
8 changed files with 18 additions and 18 deletions
+2 -2
View File
@@ -35,10 +35,10 @@ int main() {
.drain = [](auto */*ws*/) { .drain = [](auto */*ws*/) {
/* Check getBufferedAmount here */ /* Check getBufferedAmount here */
}, },
.ping = [](auto */*ws*/) { .ping = [](auto */*ws*/, std::string_view) {
}, },
.pong = [](auto */*ws*/) { .pong = [](auto */*ws*/, std::string_view) {
}, },
.close = [](auto */*ws*/, int /*code*/, std::string_view /*message*/) { .close = [](auto */*ws*/, int /*code*/, std::string_view /*message*/) {
+2 -2
View File
@@ -37,10 +37,10 @@ int main() {
.drain = [](auto */*ws*/) { .drain = [](auto */*ws*/) {
/* Check ws->getBufferedAmount() here */ /* Check ws->getBufferedAmount() here */
}, },
.ping = [](auto */*ws*/) { .ping = [](auto */*ws*/, std::string_view) {
/* Not implemented yet */ /* Not implemented yet */
}, },
.pong = [](auto */*ws*/) { .pong = [](auto */*ws*/, std::string_view) {
/* Not implemented yet */ /* Not implemented yet */
}, },
.close = [](auto */*ws*/, int /*code*/, std::string_view /*message*/) { .close = [](auto */*ws*/, int /*code*/, std::string_view /*message*/) {
+2 -2
View File
@@ -32,10 +32,10 @@ int main() {
.drain = [](auto */*ws*/) { .drain = [](auto */*ws*/) {
/* Check getBufferedAmount here */ /* Check getBufferedAmount here */
}, },
.ping = [](auto */*ws*/) { .ping = [](auto */*ws*/, std::string_view) {
}, },
.pong = [](auto */*ws*/) { .pong = [](auto */*ws*/, std::string_view) {
}, },
.close = [](auto */*ws*/, int /*code*/, std::string_view /*message*/) { .close = [](auto */*ws*/, int /*code*/, std::string_view /*message*/) {
+2 -2
View File
@@ -106,10 +106,10 @@ int main() {
.drain = [](auto */*ws*/) { .drain = [](auto */*ws*/) {
/* Check ws->getBufferedAmount() here */ /* Check ws->getBufferedAmount() here */
}, },
.ping = [](auto */*ws*/) { .ping = [](auto */*ws*/, std::string_view) {
/* You don't need to handle this one, we automatically respond to pings as per standard */ /* You don't need to handle this one, we automatically respond to pings as per standard */
}, },
.pong = [](auto */*ws*/) { .pong = [](auto */*ws*/, std::string_view) {
/* You don't need to handle this one either */ /* You don't need to handle this one either */
}, },
.close = [](auto */*ws*/, int /*code*/, std::string_view /*message*/) { .close = [](auto */*ws*/, int /*code*/, std::string_view /*message*/) {
+2 -2
View File
@@ -59,10 +59,10 @@ int main() {
.drain = [](auto */*ws*/) { .drain = [](auto */*ws*/) {
/* Check ws->getBufferedAmount() here */ /* Check ws->getBufferedAmount() here */
}, },
.ping = [](auto */*ws*/) { .ping = [](auto */*ws*/, std::string_view) {
/* You don't need to handle this one, we automatically respond to pings as per standard */ /* You don't need to handle this one, we automatically respond to pings as per standard */
}, },
.pong = [](auto */*ws*/) { .pong = [](auto */*ws*/, std::string_view) {
/* You don't need to handle this one either */ /* You don't need to handle this one either */
}, },
.close = [](auto */*ws*/, int /*code*/, std::string_view /*message*/) { .close = [](auto */*ws*/, int /*code*/, std::string_view /*message*/) {
+2 -2
View File
@@ -155,8 +155,8 @@ public:
MoveOnlyFunction<void(WebSocket<SSL, true, UserData> *)> open = nullptr; MoveOnlyFunction<void(WebSocket<SSL, true, UserData> *)> open = nullptr;
MoveOnlyFunction<void(WebSocket<SSL, true, UserData> *, std::string_view, OpCode)> message = nullptr; MoveOnlyFunction<void(WebSocket<SSL, true, UserData> *, std::string_view, OpCode)> message = nullptr;
MoveOnlyFunction<void(WebSocket<SSL, true, UserData> *)> drain = nullptr; MoveOnlyFunction<void(WebSocket<SSL, true, UserData> *)> drain = nullptr;
MoveOnlyFunction<void(WebSocket<SSL, true, UserData> *)> ping = nullptr; MoveOnlyFunction<void(WebSocket<SSL, true, UserData> *, std::string_view)> ping = nullptr;
MoveOnlyFunction<void(WebSocket<SSL, true, UserData> *)> pong = nullptr; MoveOnlyFunction<void(WebSocket<SSL, true, UserData> *, std::string_view)> pong = nullptr;
MoveOnlyFunction<void(WebSocket<SSL, true, UserData> *, int, std::string_view)> close = nullptr; MoveOnlyFunction<void(WebSocket<SSL, true, UserData> *, int, std::string_view)> close = nullptr;
}; };
+4 -4
View File
@@ -171,14 +171,14 @@ private:
if (opCode == PING) { if (opCode == PING) {
webSocket->send(std::string_view(data, length), (OpCode) OpCode::PONG); webSocket->send(std::string_view(data, length), (OpCode) OpCode::PONG);
if (webSocketContextData->pingHandler) { if (webSocketContextData->pingHandler) {
webSocketContextData->pingHandler(webSocket); webSocketContextData->pingHandler(webSocket, {data, length});
if (us_socket_is_closed(SSL, (us_socket_t *) s) || webSocketData->isShuttingDown) { if (us_socket_is_closed(SSL, (us_socket_t *) s) || webSocketData->isShuttingDown) {
return true; return true;
} }
} }
} else if (opCode == PONG) { } else if (opCode == PONG) {
if (webSocketContextData->pongHandler) { if (webSocketContextData->pongHandler) {
webSocketContextData->pongHandler(webSocket); webSocketContextData->pongHandler(webSocket, {data, length});
if (us_socket_is_closed(SSL, (us_socket_t *) s) || webSocketData->isShuttingDown) { if (us_socket_is_closed(SSL, (us_socket_t *) s) || webSocketData->isShuttingDown) {
return true; return true;
} }
@@ -200,14 +200,14 @@ private:
if (opCode == PING) { if (opCode == PING) {
webSocket->send(std::string_view(controlBuffer, webSocketData->controlTipLength), (OpCode) OpCode::PONG); webSocket->send(std::string_view(controlBuffer, webSocketData->controlTipLength), (OpCode) OpCode::PONG);
if (webSocketContextData->pingHandler) { if (webSocketContextData->pingHandler) {
webSocketContextData->pingHandler(webSocket); webSocketContextData->pingHandler(webSocket, std::string_view(controlBuffer, webSocketData->controlTipLength));
if (us_socket_is_closed(SSL, (us_socket_t *) s) || webSocketData->isShuttingDown) { if (us_socket_is_closed(SSL, (us_socket_t *) s) || webSocketData->isShuttingDown) {
return true; return true;
} }
} }
} else if (opCode == PONG) { } else if (opCode == PONG) {
if (webSocketContextData->pongHandler) { if (webSocketContextData->pongHandler) {
webSocketContextData->pongHandler(webSocket); webSocketContextData->pongHandler(webSocket, std::string_view(controlBuffer, webSocketData->controlTipLength));
if (us_socket_is_closed(SSL, (us_socket_t *) s) || webSocketData->isShuttingDown) { if (us_socket_is_closed(SSL, (us_socket_t *) s) || webSocketData->isShuttingDown) {
return true; return true;
} }
+2 -2
View File
@@ -52,8 +52,8 @@ public:
MoveOnlyFunction<void(WebSocket<SSL, true, USERDATA> *)> drainHandler = nullptr; MoveOnlyFunction<void(WebSocket<SSL, true, USERDATA> *)> drainHandler = nullptr;
MoveOnlyFunction<void(WebSocket<SSL, true, USERDATA> *, int, std::string_view)> closeHandler = nullptr; MoveOnlyFunction<void(WebSocket<SSL, true, USERDATA> *, int, std::string_view)> closeHandler = nullptr;
/* Todo: these should take message also; breaking change for v0.18 */ /* Todo: these should take message also; breaking change for v0.18 */
MoveOnlyFunction<void(WebSocket<SSL, true, USERDATA> *)> pingHandler = nullptr; MoveOnlyFunction<void(WebSocket<SSL, true, USERDATA> *, std::string_view)> pingHandler = nullptr;
MoveOnlyFunction<void(WebSocket<SSL, true, USERDATA> *)> pongHandler = nullptr; MoveOnlyFunction<void(WebSocket<SSL, true, USERDATA> *, std::string_view)> pongHandler = nullptr;
/* Settings for this context */ /* Settings for this context */
size_t maxPayloadLength = 0; size_t maxPayloadLength = 0;