It looks reasonable to me, Massimo. I've circulated your mail on the company dev list, soliciting feedback, and will follow up.
On 2/8/11 5:15 PM, "Massimo Manghi" <massimo.man...@unipr.it> wrote: > >I'm doing some analysis on the scheme proposed by Karl for a new way to >handle >conditions raised by 'abort_page', > >My proposal is to add 2 new configuration script and extend the globals >with >2 new status variables: > > - AbortScript: script that gets run if abort_page is called by the >content >generator or by AfterScript. > > - ForceAfterScript (or FinalAfterScript or whatever): it's run anyway >regardless the completion code of the script that ran before in the >request >process > > - Command abort_page will have an internal status flag 'aborting' to be >set >in the module globals. This flag is set to 0 at the very beginning of the >request processing (Rivet_SendContent). 'abort_page' tests this flag, if >0 it >gets set as 1 and the command returns TCL_ERROR setting the usual error >info >that are trapped in Rivet_ExecuteAndCheck. > >Any subsequent call to the command will return TCL_OK disabling its >effects >within ForceAfterScript (just making sure that it cannot be interrupted in >this way). > >- 'abort_page' will accept an argument to be later retrived with a new >command 'abort_condition'. AbortScript may check this condition variable >to >branch into different blocks of code. > >Basically, the code in Rivet_ExecuteAndCheck where the abort condition is >checked > >if (strcmp (Tcl_GetString (errorCodeElementObj), "RIVET") == 0) { > ... > >} > >should test the definition of a new conf variable rivet_abort_script and >execute it if defined. The whole function has to also check for the new >conf >variable rivet_force_script and run it anyway before printing the headers >and >flushing the channel. > >thoughts? > >-- Massimo > > >--------------------------------------------------------------------- >To unsubscribe, e-mail: rivet-dev-unsubscr...@tcl.apache.org >For additional commands, e-mail: rivet-dev-h...@tcl.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: rivet-dev-unsubscr...@tcl.apache.org For additional commands, e-mail: rivet-dev-h...@tcl.apache.org