From bb0a0acbda226ea26cf223d907a7e6189027b8b9 Mon Sep 17 00:00:00 2001 From: tt2468 Date: Sat, 27 Feb 2021 08:52:19 -0800 Subject: [PATCH 1/2] Requests: Add Sleep New request to induce delay in the processing of `ExecuteBatch` --- src/WSRequestHandler.cpp | 1 + src/WSRequestHandler.h | 1 + src/WSRequestHandler_General.cpp | 21 +++++++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/src/WSRequestHandler.cpp b/src/WSRequestHandler.cpp index 0ad58204..0eec2529 100644 --- a/src/WSRequestHandler.cpp +++ b/src/WSRequestHandler.cpp @@ -43,6 +43,7 @@ const QHash WSRequestHandler::messageMap{ { "TriggerHotkeyByName", &WSRequestHandler::TriggerHotkeyByName }, { "TriggerHotkeyBySequence", &WSRequestHandler::TriggerHotkeyBySequence }, { "ExecuteBatch", &WSRequestHandler::ExecuteBatch }, + { "Sleep", &WSRequestHandler::Sleep }, // Category: Media Control { "PlayPauseMedia", &WSRequestHandler::PlayPauseMedia }, diff --git a/src/WSRequestHandler.h b/src/WSRequestHandler.h index 15f189e4..82aa5ee3 100644 --- a/src/WSRequestHandler.h +++ b/src/WSRequestHandler.h @@ -61,6 +61,7 @@ class WSRequestHandler { RpcResponse TriggerHotkeyByName(const RpcRequest&); RpcResponse TriggerHotkeyBySequence(const RpcRequest&); RpcResponse ExecuteBatch(const RpcRequest&); + RpcResponse Sleep(const RpcRequest&); // Category: Media Control RpcResponse PlayPauseMedia(const RpcRequest&); diff --git a/src/WSRequestHandler_General.cpp b/src/WSRequestHandler_General.cpp index 39824735..300bc5be 100644 --- a/src/WSRequestHandler_General.cpp +++ b/src/WSRequestHandler_General.cpp @@ -474,3 +474,24 @@ RpcResponse WSRequestHandler::ExecuteBatch(const RpcRequest& request) { obs_data_set_array(response, "results", results); return request.success(response); } + +/** + * Waits for the specified delay. Designed to be used in `ExecuteBatch` operations. + * + * @param {int} `delayMillis` Delay in milliseconds to wait before continuing. + * + * @api requests + * @name Sleep + * @category general + * @since unreleased + */ +RpcResponse WSRequestHandler::Sleep(const RpcRequest& request) { + if (!request.hasField("delayMillis")) { + return request.failed("missing request parameters"); + } + + long long delayMillis = obs_data_get_int(request.parameters(), "delayMillis"); + std::this_thread::sleep_for(std::chrono::milliseconds(delayMillis)); + + return request.success(); +} From 7e14032d2b68331b965d1bd35f4d3916d7d2aa42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Lepin?= Date: Sun, 28 Feb 2021 03:05:42 +0100 Subject: [PATCH 2/2] requests(Sleep): update parameter name --- src/WSRequestHandler_General.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/WSRequestHandler_General.cpp b/src/WSRequestHandler_General.cpp index 300bc5be..b08023d0 100644 --- a/src/WSRequestHandler_General.cpp +++ b/src/WSRequestHandler_General.cpp @@ -476,9 +476,9 @@ RpcResponse WSRequestHandler::ExecuteBatch(const RpcRequest& request) { } /** - * Waits for the specified delay. Designed to be used in `ExecuteBatch` operations. + * Waits for the specified duration. Designed to be used in `ExecuteBatch` operations. * - * @param {int} `delayMillis` Delay in milliseconds to wait before continuing. + * @param {int} `sleepMillis` Delay in milliseconds to wait before continuing. * * @api requests * @name Sleep @@ -486,12 +486,12 @@ RpcResponse WSRequestHandler::ExecuteBatch(const RpcRequest& request) { * @since unreleased */ RpcResponse WSRequestHandler::Sleep(const RpcRequest& request) { - if (!request.hasField("delayMillis")) { + if (!request.hasField("sleepMillis")) { return request.failed("missing request parameters"); } - long long delayMillis = obs_data_get_int(request.parameters(), "delayMillis"); - std::this_thread::sleep_for(std::chrono::milliseconds(delayMillis)); + long long sleepMillis = obs_data_get_int(request.parameters(), "sleepMillis"); + std::this_thread::sleep_for(std::chrono::milliseconds(sleepMillis)); return request.success(); }