The operation we want to do only if the test is true.
The operation we want to do only if the test is true.
Returns true if continuation can be run.
Returns true if continuation can be run.
If false, the operation will be suspended, and resumed later. Once test is true, then the continuation will be run.
Specifies that this suspension does not write to the data output stream.
Specifies that this suspension does not write to the data output stream.
Override in TargetLengthOperation,and in SuspendableExpression as they don't write to the DOS hence, if a DOS is created it can be setFinished immediately.
TODO: Redundant with implementing maybeKnownLengthInBits as MaybeULong(0L)
Run the first time.
Run the first time.
After calling this, call isDone and if that's false call isMakingProgress to understand whether it is done, blocked on the exactly same situation, or blocked elsewhere.
After calling this, call isDone and if that's false call isMakingProgress to understand whether it is done, blocked on the exactly same situation, or blocked elsewhere.
This status is needed to implement circular deadlock detection
SuspendableOperation is used for suspending and retrying things that aren't expressions. Example is an alignmentFill unparser. Until we know the absolute start bit positon, we can't lay down alignment fill bits.
This has to be suspended and retried later, but it's not an expression being evaluated that has forward references.