[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

RE: [xml] Re: XML libs (was Re: gconf backend)



On Sun, 2003-09-28 at 17:17, Stéphane Bidoul wrote:
> > > For instance, assume we have library A that uses libxml2, 
> > > and library B that uses libxml2 too.
> > > Both need to catch global error messages, but they don't
> > > know about each other. They can't both register their own
> > > global xmlGenericError at the same time, right?
> > > 
> > > The last error mechanism is only a proposal to work 
> > > around this without requiring far reaching changes to 
> > > the APIs. 
> > 
> > I save the current handler and set my own handler while I use libxml2,
> > then restore the old handler when I am done.  
> 
> Sure. But that can become quite complex in libraries
> with many entry points and possibly callbacks into client code.
> 

Yeah, even more so if you want to swap out some of the other global
context like the allocation routines.  A global context structure ptr is
useful here.

> > I think the last error
> > mechanism would be similar, you'd clear the error before calling and
> > check it after leaving the api.  
> 
> No need to clear it before: the last error is not a way to detect
> that an error occured, it's just a way to know which error it was,
> when libxml2 tells you that something has failed.

True.

> 
> > The global handler is really 
> > a logging
> > function... if you have multiple contexts going, it's nice to 
> > be able to
> > tag the error with the context in the log because even though 
> > the error
> > might not have anything to do with the context (out of memory), you
> > still want to know which context failed so that you can resubmit it.
> 
> Hum, IMHO it's more than a logging function. Sometimes you need the error
> message elsewhere than in a log file, and the global handler is
> the only way to get that message back from libxml2 ATM.
> 

I mentioned logging because of the printf-like functionality.  That's
really why it synchronous -- there's more information about the error at
the point it occurred -- I like that.




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]