XpGetDocumentData man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

XpGetDocumentData(3Xp)	       XPRINT FUNCTIONS		XpGetDocumentData(3Xp)

NAME
       XpGetDocumentData - Creates and initializes a new print context.

SYNOPSIS
	     cc [ flag... ] file... -lXp [ library... ]
	     #include <X11/extensions/Print.h>

       Status  XpGetDocumentData  (  data_display,  context,  save_proc,  fin‐
       ish_proc, client_data )
	     Display *data_display;
	     XPContext context;
	     XPSaveProc save_proc;
	     XPFinishProc finish_proc;
	     XPointer client_data;

ARGUMENTS
       data_display
	      Specifies a pointer to  the  Display  structure;	returned  from
	      XOpenDisplay.

       context
	      The print context from which document data is to be retrieved.

       save_proc
	      A	 procedure  to	be  registered	and  called repeatedly to save
	      blocks of document data.

       finish_proc
	      A procedure to be registered and called once when the print  job
	      has completed and all document data has been sent to save_proc.

       client_data
	      Specifies	 client data to be passed to save_proc and finish_proc
	      when called.

DESCRIPTION
       XpGetDocumentData registers callbacks that allow a "consumer"  to  con‐
       tinuously  retrieve  document data generated in the X Print Server by a
       separate "producer", where both are referencing the same print  context
       by  way	of  different  display	connections.  Though XpGetDocumentData
       retrieves document data, its effect is bounded by XpStartJob and XpEnd‐
       Job.  XpGetDocumentData	always returns immediately; if an error occurs
       and the callbacks cannot be registered, the return status  is  0,  else
       the return status is non-zero and the callbacks will be called sometime
       after  the  return  from	 XpGetDocumentData.   This   producer/consumer
       exchange	 is set up when XpStartJob is called by the producer with out‐
       put_mode equal XPGetData, and is subsequently initiated when XpGetDocu‐
       mentData is called by the consumer. Though XpStartJob will return imme‐
       diately, further attempts to use the producer's display connection  may
       be  blocked  by the X Print Server until XpGetDocumentData is called on
       the consumer's display connection.

       Following a successful call to  XpGetDocumentData,  the	consumer  must
       enter a loop to process events from the server, for example, by calling
       XNextEvent. The event processing code will invoke  save_proc  and  fin‐
       ish_proc	 as needed to consume incoming data. To avoid blocking indefi‐
       nitely in XNextEvent, the  consumer  should  select  for	 XPPrintNotify
       events, and watch for XPEndJobNotify. This event will be sent following
       the call to finish_proc and the consumer can safely exit	 the  loop  at
       this   point.  Aside  from  this	 processing  of	 XPrintNotify  events,
       data_display must not be used for any additional X requests until  fin‐
       ish_proc is called and returns.

STRUCTURES
       The save_proc is defined in <X11/extensions/Print.h> as:

       typedef void (*XPSaveProc)( Display *data_display,
				  XPContext context,
				  unsigned char *data,
				  unsigned int data_len,
				  XPointer client_data);

       The  save_proc is repeatedly called on each chunk of document data sent
       by the X Print Server until either XpEndJob or XpCancelJob  is  called.
       data_len	 specifies  the	 number	 of bytes in data. The memory for data
       itself is owned by the  library,	 so  save_proc	should	copy  data  to
       another	location  before  returning.  After the last block of data has
       been delivered to save_proc, finish_proc is called with final status.

       The finish_proc is defined in <X11/extensions/Print.h> as:

       typedef void (*XPFinishProc)( Display *data_display,
				    XPContext context,
				    XPGetDocStatus status,
				    XPointer client_data);

       After XpGetDocumentData successfully registers the callbacks, any  gen‐
       erated  X  errors  (for	example,  BadAlloc) or Xp errors (for example,
       XPBadContext or XPBadSequence) that are the result of XpGetDocumentData
       will  cause  the	 Xlib error handler to be invoked, and then will cause
       finish_proc to be called with a	status	of  XPGetDocError.  Any	 other
       activities  (for	 example, a separate process destroying the print con‐
       text) that prove fatal to the progress of XpGetDocumentData  will  also
       cause finish_proc to be called with a status of XPGetDocError.

       If  XpGetDocumentData  is  called prior to XpStartJob, then an XPBadSe‐
       quence error is generated and finish_proc is called with XPGetDocError.
       If  XpGetDocumentData  is  called  after XpStartJob and output_mode was
       specified as XPSpool, then an XPBadSequence error is generated and fin‐
       ish_proc is called with XPGetDocError.  If the producer starts generat‐
       ing data and the consumer cannot consume data quickly enough, then  the
       producer's display connection will be blocked by the X Print Server.

       Until  XpEndJob	or  XpCancelJob is called, it is possible that various
       XPPrintNotify events will be generated (for example, a  page  has  been
       canceled).   The	 data passed to save_proc is not necessarily organized
       according to the consumer's requests or any generated events,  and  its
       consistency is guaranteed only if the entire job completes successfully
       (i.e. without being canceled or generating an error).

       When finish_proc is called, sometime after XpGetDocumentData is	called
       and  returns,  status  gives  the  completion  status of the job and is
       defined in <X11/extensions/Print.h> as:

	    #define XPGetDocFinished	    0	    /∗ normal termination */
	    #define XPGetDocSecondConsumer  1	    /∗ setup error */
	    #define XPGetDocError	    2	    /∗ progress error */

       XPGetDocFinished indicates that all intended  document  data  has  been
       delivered  by  way of save_proc. All cancellation events are guaranteed
       to have arrived by the time finished_proc is called, and they should be
       taken  into  consideration  for evaluating the validity of the document
       data returned.

       XPGetDocSecondConsumer indicates	 that  a  consumer  had	 already  been
       established for the print context. The X Print Server only supports one
       consumer per print context.

       XPGetDocError indicates that an error has been generated (for  example,
       XPBadContext  or	 XPBadSequence) and that no further document data will
       be delivered by the X Print Server to save_proc.

       After finish_proc returns, save_proc and finish_proc  are  unregistered
       and will no longer be called.

DIAGNOSTICS
       XPBadContext   A	 valid print context-id has not been set prior to mak‐
		      ing this call.

       XPBadSequence  The function was not called in  the  proper  order  with
		      respect  to  the	other  X Print Service Extension calls
		      (for example, XpGetDocumentData prior to XpStartJob).

SEE ALSO
       XpCancelJob(3Xp), XpEndJob(3Xp), XpStartJob(3Xp)

X Version 11			  libXp 1.0.3		XpGetDocumentData(3Xp)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net