Project: Extra Material
In this section, we provide some description of the given skeleton.
On the client side, a transaction is started when the user enters the run command in the client window. This is marked by sending a request to the server. Afterwards, the client sends the actions of the list (the transaction) one by one in the order they were entered by the user. Once, all the actions are sent, the client sends a confirm message and waits for the server reply.
On the server side, the server will always reply by an abort message and without any changes to the store.
Message Sequence Chart
Below, we give a possible scenario where one client sends a transaction.
Observe that, as depicted in the above picture the following always hold:
- A transaction is always marked by the message request at the start, and confirm at the end.
- The order in which the transaction actions are sent is preserved at the receive (server) side.
We give below another scenario where two clients send simultaneously two transactions to the server.
- The order in which you receive all the actions related to one of the transactions is exactly the same in which they were sent (from the corresponding clients).
- At the server side, the interleaving of the actions corresponding to different transactions is random. The important thing here is that when you are implementing, you should take that interleaving into consideration.