XPAServer(3) The XPA Server-side Programming Interface


A description of the XPA server-side programming interface.


Introduction to XPA Server Programming

Creating an XPA server is easy: you generally only need to call the XPANew() subroutine to define a named XPA access point and set up the send and receive callback routines. You then enter an event loop such as XPAMainLoop() to field XPA requests.

  #include <xpa.h>
  XPA XPANew(char *class, char *name, char *help,
      int (*send_callback)(), void *send_data, char *send_mode,
      int (*rec_callback)(),  void *rec_data,  char *rec_mode);
  XPA XPACmdNew(char *class, char *name);
  XPACmd XPACmdAdd(XPA xpa,
         char *name, char *help,
         int (*send_callback)(), void *send_data, char *send_mode,
         int (*rec_callback)(),  void *rec_data,  char *rec_mode);
  void XPACmdDel(XPA xpa, XPACmd cmd);
  XPA XPAInfoNew(char *class, char *name,
      int (*info_callback)(), void *info_data, char *info_mode);
  int XPAFree(XPA xpa);
  void XPAMainLoop(void);
  int XPAPoll(int msec, int maxreq);
  void XPAAtExit(void);
  void XPACleanup(void);


To use the XPA application programming interface, a software developer generally will include the xpa.h definitions file:

  #include <xpa.h>

in the software module that defines or accesses an XPA access point, and then will link against the libxpa.a library:

  gcc -o foo foo.c libxpa.a

XPA has been compiled using both C and C++ compilers.

A server program generally defines an XPA access point by calling the XPANew() routine and specifies ``send'' and/or ``receive'' callback procedures to be executed by the program when an external process either sends data or commands to this access point or requests data or information from this access point. A program also can define several sub-commands for a single access point by calling XPACmdNew() and XPACmdAdd() instead. Having defined one or more public access points in this way, an XPA server program enters its usual event loop (or uses the standard XPA event loop).