To comment on only two aspects of your posting.
Rhett Aultman wrote:
From: Oleg Tkachenko [mailto:[EMAIL PROTECTED]]
Generally, event-driven processing is a pretty good thing. The critical issue with it, though, is the ratio of event production to event processing. If that number is anything greater than 1, then more events are being produced in a stretch of time than can be effectively processed in that stretch of time. Events start to queue up, taking up memory. If it happens enough, the heap starts to get a little too full, the gc runs a little too much, and that causes processing time to suffer even further. Under most circumstances, event-based processing is like using a garden hose to water a bed of flowers. It works just fine. Under more intense cases, though, it can be more like using a garden hose to fill a small container of water, then leaving the hose laying around (spilling water all over the lawn) while the container gets carried off somewhere.
This is not a problem for at least the maintenance version of the code.
All of the processing is triggered by incoming SAX events, and occurs
within the SAX callbacks. These are synchronous events, so the parsing
stalls until the callback returns. Page-sequence rendering, e.g.,
occurs within the endElement() callback of an fo:page-sequence element.
It's in "Comparing XmlReader to SAX Reader" page: "The push model can
be built on top of the pull model. The reverse is not true." Too
categorical statement, I think.
And, I believe, it might be wrong, though I must read the full source text. The push model can be seen as a special case of a pull model in the sense of "Pull everything ASAP, now and until the data is exhausted." But, a pull model can be grafted onto a push model by implementing what amounts to a specialized buffer of the pushed data that accepts pull queries...no?
Which is what I have done.
Peter B. West [EMAIL PROTECTED] http://www.powerup.com.au/~pbwest/
"Lord, to whom shall we go?"
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]