[Seaside] Re: WAProcess>>critical:ifError problem

Esteban A. Maringolo eMaringolo at smalltalking.net
Tue Nov 8 13:39:33 CET 2005


Hi,

Without having found a solution to this problem, evaluating the 
following code on a workspace, answers the expected value.

|value mutex block errorBlock |
block := [Processor sleep: 1000. 'Ey! I am not nil!'].
errorBlock := [Transcript show: 'Error!';cr].
mutex := Semaphore forMutualExclusion.
mutex critical:[
     responseSem := Semaphore new.
     process := [
             [value := block on: Error do: errorBlock]
             ensure: [responseSem signal]
         ] fork.
     responseSem wait
].
process := nil.
^ value "display-it"


Perhaps the problem in WAProcess>>critical:ifError: is because 
aBlock does some continuation stuff inside.

Can that be a reason?

Best regards,

-- 
Esteban.

Esteban A. Maringolo escribió:
> Hi,
> 
> I'm having problems with the following method in WAProcess, on a Dolphin 
> 5 Smalltalk:
> 
> critical: aBlock ifError: errorBlock
>   |value|
>   mutex critical:[
>     responseSem := Semaphore new.
>     process := [
>             [value := aBlock on: Error do: errorBlock]
>             ensure: [responseSem signal]
>         ] fork.
>     responseSem wait
>   ].
>   process := nil.
>   ^ value
> 
> 
> After evaluating aBlock value gets its contents (a WAResponse).
> But when the mutex ends the critical evaluation, value is nil.
> 
> Perhaps it has something with the Continuations that happens inside the 
> process, or something similar.
> 
> What can be causing this?
> 
> 
> This message is cross posted  to Seaside list, and Dolphin newsgroup 
> intentionally.
> 
> Best regards,
> 
> -- 
> Esteban.



More information about the Seaside mailing list