Optionalproperties: Partial<{ parent: MiniObject }>Expire a promise. This will wake up any waiters with
Gst.PromiseResult.EXPIRED. Called by a message loop when the parent
message is handled and/or destroyed (possibly unanswered).
Retrieve the reply set on promise. promise must be in
Gst.PromiseResult.REPLIED and the returned structure is owned by promise
The reply set on promise
Interrupt waiting for a promise. This will wake up any waiters with
Gst.PromiseResult.INTERRUPTED. Called when the consumer does not want
the value produced anymore.
Set a reply on promise. This will wake up any waiters with
Gst.PromiseResult.REPLIED. Called by the producer of the value to
indicate success (or failure).
If promise has already been interrupted by the consumer, then this reply
is not visible to the consumer.
Optionals: Structurea Gst.Structure with the the reply contents
Decreases the refcount of the promise. If the refcount reaches 0, the promise will be freed.
Wait for promise to move out of the Gst.PromiseResult.PENDING state.
If promise is not in Gst.PromiseResult.PENDING then it will return
immediately with the current result.
the result of the promise
StaticnewStaticnew_
The Gst.Promise object implements the container for values that may be available later. i.e. a Future or a Promise in https://en.wikipedia.org/wiki/Futures_and_promises. As with all Future/Promise-like functionality, there is the concept of the producer of the value and the consumer of the value.
A Gst.Promise is created with
gst_promise_new()by the consumer and passed to the producer to avoid thread safety issues with the change callback. A Gst.Promise can be replied to with a value (or an error) by the producer withgst_promise_reply(). The exact value returned is defined by the API contract of the producer andnullmay be a valid reply.gst_promise_interrupt()is for the consumer to indicate to the producer that the value is not needed anymore and producing that value can stop. TheGST_PROMISE_RESULT_EXPIREDstate set by a call togst_promise_expire()indicates to the consumer that a value will never be produced and is intended to be called by a third party that implements some notion of message handling such as Gst.Bus. A callback can also be installed at Gst.Promise creation for result changes withgst_promise_new_with_change_func(). The change callback can be used to chainGstPromises's together as in the following example.Each Gst.Promise starts out with a Gst.PromiseResult of Gst.PromiseResult.PENDING and only ever transitions once into one of the other Gst.PromiseResult's.
In order to support multi-threaded code,
gst_promise_reply(),gst_promise_interrupt()andgst_promise_expire()may all be from different threads with some restrictions and the final result of the promise is whichever call is made first. There are two restrictions on ordering:gst_promise_reply()andgst_promise_interrupt()cannot be called aftergst_promise_expire()gst_promise_reply()andgst_promise_interrupt()cannot be called twice.The change function set with
gst_promise_new_with_change_func()is called directly from either thegst_promise_reply(),gst_promise_interrupt()orgst_promise_expire()and can be called from an arbitrary thread. Gst.Promise using APIs can restrict this to a single thread or a subset of threads but that is entirely up to the API that uses Gst.Promise.Since
1.14