[xml] struct xmlOutputBuffer hand-holding



I've messed around a bit using xmlWriter to write to a file, but now I want to write to a socket, which could be a network socket. Looking at the description for xmlNewTextWriter, I see that it wants an xmlOutputBuffer structure, which is defined thusly:


  Structure xmlOutputBuffer
  struct _xmlOutputBuffer {
      void *    context
      xmlOutputWriteCallback    writecallback
      xmlOutputCloseCallback    closecallback
      xmlCharEncodingHandlerPtr encoder : I18N conversions to UTF-8
      xmlBufferPtr  buffer  : Local buffer encoded in UTF-8 or ISOLat
      xmlBufferPtr      conv    : if encoder != NULL buffer for output
      int       written : total number of byte written
      int       error
  }

I'm trying to figure out how work with this. Would one of you be so kind as to check my inferences on what this means?

I figure that "context" is a pointer to whatever structure I define that has the information I need for my write routine, such as the file descriptor, and that it will be passed to me whenever a function like xmlTextWriterWriteElement() is called. It's up to my writecallback function to handle cases like not being able to write on the socket, or whether to flush the output. I assume also that closecallback is responsible for freeing any memory allocated when I created the socket, or any other resources used by writecallback. Am I on the right track?

As for written and error: Should writecallback maintain them, or will the xmlWriter api handle that?

Thanks!
--
Bruce A. Johnson
Chantilly, Virginia
Day of inquiry.  You will be subpoenaed.




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