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
                
                