[Seaside] Questions about double (or more) request

Diogenes Alberto Moreira diogenes.moreira at gmail.com
Wed Aug 5 20:38:24 UTC 2009


Puaggggggggggg, relational...

Well,  you can replace  the block for a empty block in the  
continuation...but this is advance seaside :P,

You can extend WAApplication and extend handle request...

regards.

El 05/08/2009, a las 16:45, Mariano Martinez Peck escribió:

> Thanks to all. Now I get it. But...I still wonder how can I manage  
> double request.
>
> 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!
>
> mariano
>
> On Wed, Aug 5, 2009 at 6:11 PM, Diogenes Alberto Moreira <diogenes.moreira at gmail.com 
> > wrote:
> The point is that, for every click you do, seaside run a continuation
> it is identified by the  _s _f and  a number.
>
> At this point when you assign a block to call back the blk is
> leads to the context, where count is a value x, eg 20
>
> if you run  70 times the same continuation, count value will be the  
> same 21  (20 +1).
>
> because that,  Transcript show increase, increase, increase,  
> renderContentOn and the count value is the same 21.
>
> because that, fixtemp is very important in squeak, and Pharo have  
> better behavior.
>
> wich click is running all... but al run the same block
>
> regard (sorry for my google english).
>
> El 05/08/2009, a las 15:54, Diogenes Alberto Moreira escribió:
>
>
> Bueno te lo contesto en castellano y despues trato de traducirlo. en  
> otro mail (sorry for english speakers, my English is horrible)
>
> El punto es este, por cada click que haces se ejecuta un  
> continuation que esta identificado por el _s para la session _k para  
> el componete un numero de &.
> en punto que cuando vos le asignas un bloque al call back el bloque  
> se lleva el contexto, donde count tiene un valor x, por ejemplo 20
>
> por mas que ejecutes 70 veces, en el contexto del bloque count vale  
> 20  e incease ejecuta count := 20 + 1.
>
> por eso en el transcript, te aperece increase, incease,  
> rendercontentOn y el valor que toma count es simpre 21. (para  
> nuestro ejemplo). y por eso lo importante del fixtemp en squeak y la  
> mejora que significo Pharo.
>
> cual se ejecuta,,, todos.... pero todos hacen lo mismo...
>
> Espero ser claro....
>
> PD: mariano ponele onda y traducilo.
>
> Saludos
>
> El 05/08/2009, a las 15:40, Mariano Martinez Peck escribió:
>
> 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.
> 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!
>
> best,
>
> Mariano
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
>
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside

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


More information about the seaside mailing list