Requests: Add Sleep

New request to induce delay in the processing of `ExecuteBatch`
This commit is contained in:
tt2468 2021-02-27 08:52:19 -08:00
parent 9bbfb73622
commit bb0a0acbda
3 changed files with 23 additions and 0 deletions

View File

@ -43,6 +43,7 @@ const QHash<QString, RpcMethodHandler> WSRequestHandler::messageMap{
{ "TriggerHotkeyByName", &WSRequestHandler::TriggerHotkeyByName },
{ "TriggerHotkeyBySequence", &WSRequestHandler::TriggerHotkeyBySequence },
{ "ExecuteBatch", &WSRequestHandler::ExecuteBatch },
{ "Sleep", &WSRequestHandler::Sleep },
// Category: Media Control
{ "PlayPauseMedia", &WSRequestHandler::PlayPauseMedia },

View File

@ -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&);

View File

@ -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();
}