diff options
Diffstat (limited to 'xpa/doc/pod/xpamainloop.pod')
-rw-r--r-- | xpa/doc/pod/xpamainloop.pod | 108 |
1 files changed, 0 insertions, 108 deletions
diff --git a/xpa/doc/pod/xpamainloop.pod b/xpa/doc/pod/xpamainloop.pod deleted file mode 100644 index 4fabf8e..0000000 --- a/xpa/doc/pod/xpamainloop.pod +++ /dev/null @@ -1,108 +0,0 @@ -=pod - -=head1 NAME - - - -B<XPAMainLoop: optional main loop for XPA> - - - -=head1 SYNOPSIS - - - - - - #include <xpa.h> - - void XPAMainLoop(); - - - - - -=head1 DESCRIPTION - - - - -Once XPA access points have been defined, a program must enter an -event loop to watch for requests from external programs. This can be -done in a variety of ways, depending on whether the event loop is -processing events other than XPA events. In cases where there are no -non-XPA events to be processed, the program can simply call the -XPAMainLoop() event loop. This loop is implemented essentially as -follows (error checking is simplified in this example): - - FD_ZERO(&readfds); - while( XPAAddSelect(NULL, &readfds) ){ - if( sgot = select(swidth, &readfds, NULL, NULL, NULL) >0 ) - XPAProcessSelect(&readfds, 0); - else - break; - FD_ZERO(&readfds); - } - - -The XPAAddSelect() routine sets up the select() readfds variable so -that select() will wait for I/O on all the active XPA channels. It -returns the number of XPAs that are active; the loop will end when -there are no active XPAs. The standard select() routine is called to -wait for an external I/O request. Since no timeout struct is passed -in argument 5, the select() call hangs until there is an external -request. When an external I/O request is made, the XPAProcessSelect() -routine is executed to process the pending requests. In this routine, -the maxreq value determines how many requests will be processed: if -maxreq <=0, then all currently pending requests will be processed. -Otherwise, up to maxreq requests will be processed. (The most usual -values for maxreq is 0 to process all requests.) - - -If a program has its own Unix select() loop, then XPA access points can -be added to it by using a variation of the standard XPAMainLoop: - - XPAAddSelect(xpa, &readfds); - [app-specific ...] - if( select(width, &readfds, ...) ){ - XPAProcessSelect(&readfds, maxreq); - [app-specific ...] - FD_ZERO(&readfds); - } - - -XPAAddSelect() is called before select() to add the access points. -If the first argument is NULL, then all active XPA access points -are added. Otherwise only the specified access point is added. -After select() is called, the XPAProcessSelect() routine can be called -to process XPA requests. Once again, the maxreq value determines how -many requests will be processed: if maxreq <=0, then all currently -pending requests will be processed. Otherwise, up to maxreq requests -will be processed. - - -XPA access points can be added to -Xt event loops (using XtAppMainLoop()) -and -Tcl/Tk event loops (using vwait and the Tk loop). -When using XPA with these event loops, you only need to call: - -int XPAXtAddInput(XtAppContext app, XPA xpa) - -or - - int XPATclAddInput(XPA xpa) - -respectively before entering the loop. - - - - -=head1 SEE ALSO - - - -See xpa(n) for a list of XPA help pages - - -=cut |