tutorial:transfer-api_transactions
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
tutorial:transfer-api_transactions [2023/07/19 13:47] – technici4n | tutorial:transfer-api_transactions [2023/07/19 14:00] (current) – [Nested transactions] technici4n | ||
---|---|---|---|
Line 98: | Line 98: | ||
Here is how transactions can be visualized: | Here is how transactions can be visualized: | ||
- | - Opening a new transaction creates a new copy of the state. From now on, that copy is modified. | + | * Opening a new transaction creates a new copy of the state. From now on, that copy is modified. |
- | - Aborting a transaction discards that copy. Back to the original state. | + | |
- | - Committing a transaction replaces the original state by the modified copy. From now on, this is the new state. | + | |
We can represent this in a graph with branches: | We can represent this in a graph with branches: | ||
- | - Any modification operates on the top branch. | + | * Any modification operates on the top branch. |
- | - Opening a new transaction creates a new branch. | + | |
- | - Aborting a transaction discards the top branch. | + | |
- | - Committing a transaction merges the top branch into the branch below it. | + | |
Here is the branching graph for that first example: | Here is the branching graph for that first example: | ||
- | {{https:// | + | {{:tutorial: |
==== Nested transactions ==== | ==== Nested transactions ==== | ||
Line 152: | Line 152: | ||
Here is the corresponding graph: | Here is the corresponding graph: | ||
- | {{https:// | + | {{:tutorial: |
=== Transaction vs TransactionContext === | === Transaction vs TransactionContext === | ||
You might have noticed that sometimes we use '' | You might have noticed that sometimes we use '' | ||
- | - Use '' | + | * Use '' |
- | - Use '' | + | |
==== Implementing support for transactions ==== | ==== Implementing support for transactions ==== | ||
Line 165: | Line 165: | ||
A '' | A '' | ||
- | 1. Choose a data type to represent copies of internal state. Usually this will be a record. Here we will use '' | + | - Choose a data type to represent copies of internal state. Usually this will be a record. Here we will use '' |
- | 2. Extend '' | + | |
- | 3. Implement functions to create copies of the internal state, and restore copies thereof - respectively '' | + | |
- | 4. Call '' | + | |
Let’s start with the following template: | Let’s start with the following template: | ||
Line 245: | Line 245: | ||
Now that we have been through this background knowledge, here is how the '' | Now that we have been through this background knowledge, here is how the '' | ||
- | - When '' | + | * When '' |
- | | + | |
- | | + | |
- | - When a transaction is aborted: | + | |
- | | + | |
- | | + | |
- | - When a transaction is committed: | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
Hopefully that gives an overview of what is happening under the hood. You should now be ready to read [[https:// | Hopefully that gives an overview of what is happening under the hood. You should now be ready to read [[https:// | ||
tutorial/transfer-api_transactions.1689774426.txt.gz · Last modified: 2023/07/19 13:47 by technici4n