[Seaside] Questions about double (or more) request

Philippe Marschall 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: '--'
>
>
> increase
>     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:
>
> increase
> renderContentOn
>
> 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:
>
> increase
> increase
> increase
> increase
> renderContentOn
>
> 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.

Cheers
Philippe


More information about the seaside mailing list