[Seaside] Questions about double (or more) request

Mariano Martinez Peck marianopeck at gmail.com
Wed Aug 5 18:40:50 UTC 2009

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.
b) which of all of the self increase is the one that is finally rendered?
the first one?
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.

Thanks for the help. I just want to understand how this is handle!


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20090805/1d97a761/attachment.htm

More information about the seaside mailing list