[Mapserver-dev] Error stack system

Sean Gillies sgillies at frii.com
Sun Apr 27 14:16:12 EDT 2003


Daniel,

Thanks for implementing the error stack.  Looking forward to trying
it out with my Python apps.

cheers,
Sean

On Wednesday, April 23, 2003, at 09:20  AM, Daniel Morissette wrote:

> Hi everyone,
>
> Back in January we had a discussion about adding an error stack in
> MapServer to help reporting multiple errors, mostly with things
> like rendering a map composed of multiple WMS layers.
>
> I have finally implemented this.  No worries, there are no changes for
> those who don't care about the error stack.  Simply calling 
> msGetErrorObj()
> as usual will continue to work.  Errors are automagically added to the
> stack when msSetError() is called, so there is no change required in
> the code that logs errors either.
>
> For those who need access to the stack of error, here is what you
> need to know.  First it's not really a stack, I implemented it as a
> chained list in which the first item is the most recent, so it appears
> as a stack.  As mentioned above, msGetErrorObj() still returns you the
> most recent errorObj, which also happens to be the head of the chained
> list, so to access the rest of the list, use ms_error->next until you
> hit a next == NULL.
>
> Finally, the caller (MapScript, or the mapserv CGI) is responsible of
> clearing the list of errors using msResetErrorList() if/when they
> think it is necessary.
>
> This should all be available in MapScript automagically via the SWIG
> wrappers I believe, and I also added wrappers in PHP MapScript.  The
> PHP documentation is included below.
>
> Enjoy!
>
> Daniel
> -- 
> ------------------------------------------------------------
>  Daniel Morissette               morissette at dmsolutions.ca
>  DM Solutions Group              http://www.dmsolutions.ca/
> ------------------------------------------------------------
>
>
> errorObj
> --------
>
>    Instances of errorObj are created internally by MapServer as errors
>    happen.  Errors are managed as a chained list with the first item 
> being
>    the most recent error.  The head of the list can be fetched using
>    ms_GetErrorObj(), and the list can be cleared using 
> ms_ResetErrorList()
>
>  Functions:
>
>    errorObj ms_GetErrorObj()
>         Returns a reference to the head of the list of errorObj.
>
>    void ms_ResetErrorList()
>         Clear the current error list.
>         Note that clearing the list invalidates any errorObj handles 
> obtained
>         via the $error->next() method.
>
>  Members:
>
>    int      code      /* See error code constants above */
>    string   routine
>    string   message
>
>  Method:
>
>    errorObj next()
>         Returns the next errorObj in the list, or NULL if we reached 
> the end
>         of the list.
>
>  Example:
>    This example draws a map and reports all errors generated during
>    the draw() call, errors can potentially come from multiple layers.
>
>        ms_ResetErrorList();
>        $img = $map->draw();
>        $error = ms_GetErrorObj();
>        while($error && $error->code > 0)
>        {
>            printf("Error in %s: %s<br>\n", $error->routine, 
> $error->message);
>            $error = $error->next();
>        }
>
> _______________________________________________
> Mapserver-dev mailing list
> Mapserver-dev at lists.gis.umn.edu
> http://lists.gis.umn.edu/mailman/listinfo/mapserver-dev
>
>
--
Sean Gillies
sgillies at frii dot com
http://www.frii.com/~sgillies




More information about the mapserver-dev mailing list