InstructionPlan
A set of instructions with constraints on how they can be executed.
This is structured as a recursive tree of plans in order to allow for parallel execution, sequential execution and combinations of both.
Namely the following plans are supported:
- SingleInstructionPlan - A plan that contains a single instruction. This is a simple instruction wrapper and the simplest leaf in this tree.
- ParallelInstructionPlan - A plan that contains other plans that can be executed in parallel.
- SequentialInstructionPlan - A plan that contains other plans that must be executed sequentially. It also defines whether the plan is divisible meaning that instructions inside it can be split into separate transactions.
- MessagePackerInstructionPlan - A plan that can dynamically pack instructions into transaction messages.
Helpers are provided for each of these plans to make it easier to create them.