---
name: "xpaserver"
section: "3"
platform: "linux"
package: "libxpa-dev"
version: "2.1.20-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/xpaserver"
---

# xpaserver(3)

The XPA Server-side Programming Interface

## NAME

**XPAServer - The XPA Server-side Programming Interface**

## SYNOPSIS

A description of the XPA server-side programming interface.

## DESCRIPTION

**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);
```

**Introduction**

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).

## SEE ALSO

See xpa(n) for a list of XPA help pages
