Hi! I am trying to understand how seaside handle double or more, request. I started with the simpler example: WACounter, which has:<br><br>renderContentOn: html<br> Transcript show: 'renderContentOn'; cr.<br> html heading: count.<br>
html anchor<br> callback: [ self increase ];<br> with: '++'.<br> html space.<br> html anchor<br> callback: [ self decrease ];<br> with: '--'<br><br><br>increase<br> Transcript show: 'increase'; cr.<br>
count := count + 1.<br> (Delay forSeconds: 3) wait.<br><br><br>Now, suppose the counter is in 0. I click one time on '++' and wait and I see in the transcipt: <br><br>increase<br>renderContentOn<br><br>Ok, perfect. New session, 0 again. Now I click on '++' but before it finish, I click 3 times more (very quickly). I can see this in the transcipt:<br>
<br>increase<br>increase<br>increase<br>increase<br>renderContentOn<br><br>So, as I can see:<br><br>1) the callback (self increase in this case) is called for every click. <br>2) the renderContentOn isn't call until all of the self increase of that session finish. <br>
3) when renderContentOn is called, the webpage shows the number 1 (which is correct instead of 4).<br><br>Now the questions are: <br><br>a) how does seaside can do that? every request has its own variables? I think this has to be with continuations but I want to be sure. <br>
b) which of all of the self increase is the one that is finally rendered? the first one?<br>c) how can I handle the famous double commit? suppose now self increase does something in a relational database (like persisting an order or something like that) and I don't want it to get persisted twice or I don't want an error because of duplicated PK. <br>
<br>Thanks for the help. I just want to understand how this is handle!<br><br>best,<br><br>Mariano<br>