[Seaside] Questions about double (or more) request
philippe.marschall at gmail.com
Thu Aug 6 05:16:54 UTC 2009
2009/8/5 Mariano Martinez Peck <marianopeck at gmail.com>:
> Hi! I am trying to understand how seaside handle double or more, request. I
> started with the simpler example: WACounter, which has:
> renderContentOn: html
> Transcript show: 'renderContentOn'; cr.
> html heading: count.
> html anchor
> callback: [ self increase ];
> with: '++'.
> html space.
> html anchor
> callback: [ self decrease ];
> with: '--'
> Transcript show: 'increase'; cr.
> count := count + 1.
> (Delay forSeconds: 3) wait.
> Now, suppose the counter is in 0. I click one time on '++' and wait and I
> see in the transcipt:
> 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:
> So, as I can see:
> 1) the callback (self increase in this case) is called for every click.
> 2) the renderContentOn isn't call until all of the self increase of that
> session finish.
> 3) when renderContentOn is called, the webpage shows the number 1 (which is
> correct instead of 4).
> Now the questions are:
> 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.
I order of you observations:
1) You (your browser) makes three callback requests and discards the
redirect to render for the first two
2) There is a lock that allows only one request per session at a time,
otherwise your components would have to be thread safe
3) state backtracking, before every request the state of the counter
is reverted to 0
> b) which of all of the self increase is the one that is finally rendered?
> the first one?
That should be the last one. The browser should discard processing the
previous requests. Disable backtracking to be sure.
More information about the seaside