@@ -332,7 +332,9 @@ RequestResult RequestHandler::TriggerHotkeyByKeySequence(const Request &request)
332
332
}
333
333
334
334
/* *
335
- * Sleeps for a time duration or number of frames. Only available in request batches with types `SERIAL_REALTIME` or `SERIAL_FRAME`.
335
+ * Sleeps for a time duration or number of frames.
336
+ *
337
+ * Note: Only available in request batches with types `SERIAL_REALTIME` or `SERIAL_FRAME`.
336
338
*
337
339
* @requestField ?sleepMillis | Number | Number of milliseconds to sleep for (if `SERIAL_REALTIME` mode) | >= 0, <= 50000
338
340
* @requestField ?sleepFrames | Number | Number of frames to sleep for (if `SERIAL_FRAME` mode) | >= 0, <= 10000
@@ -365,3 +367,63 @@ RequestResult RequestHandler::Sleep(const Request &request)
365
367
return RequestResult::Error (RequestStatus::UnsupportedRequestBatchExecutionType);
366
368
}
367
369
}
370
+
371
+ /* *
372
+ * Compares the values of the two request fields, `left` and `right`.
373
+ *
374
+ * Note: Only available in request batches with types `SERIAL_REALTIME` or `SERIAL_FRAME`.
375
+ *
376
+ * @requestField left | Any | First request batch variable in comparison
377
+ * @requestField right | Any | Second request batch variable in comparison
378
+ *
379
+ * @responseField result | Boolean | Whether the comparison is equal
380
+ *
381
+ * @requestType Compare
382
+ * @complexity 4
383
+ * @rpcVersion -1
384
+ * @initialVersion 5.4.0
385
+ * @category general
386
+ * @api requests
387
+ */
388
+ RequestResult RequestHandler::Compare (const Request &request)
389
+ {
390
+ if (!request.RequestData .contains (" left" ) || !request.RequestData .contains (" right" ))
391
+ return RequestResult::Error (RequestStatus::MissingRequestField, " One or more sides of the comparison are missing." );
392
+
393
+ bool result = request.RequestData [" left" ] == request.RequestData [" right" ];
394
+
395
+ json responseData;
396
+ responseData[" result" ] = result;
397
+ return RequestResult::Success (responseData);
398
+ }
399
+
400
+
401
+ /* *
402
+ * Returns an error if the value of `check` is not `true`.
403
+ *
404
+ * This can be useful to interrupt a request batch from proceeding if an assumed state does not match real-world state.
405
+ *
406
+ * Note: Only available in request batches with types `SERIAL_REALTIME` or `SERIAL_FRAME`.
407
+ *
408
+ * @requestField check | Boolean | Value to assert to be true
409
+ *
410
+ * @requestType Assert
411
+ * @complexity 4
412
+ * @rpcVersion -1
413
+ * @initialVersion 5.4.0
414
+ * @category general
415
+ * @api requests
416
+ */
417
+ RequestResult RequestHandler::Assert (const Request &request)
418
+ {
419
+ RequestStatus::RequestStatus statusCode;
420
+ std::string comment;
421
+ if (!request.ValidateBoolean (" check" , statusCode, comment))
422
+ return RequestResult::Error (statusCode, comment);
423
+
424
+ bool check = request.RequestData [" check" ];
425
+ if (!check)
426
+ return RequestResult::Error (RequestStatus::AssertFailed, " Assertion failed." );
427
+
428
+ return RequestResult::Success ();
429
+ }
0 commit comments