This document is the Table of Contents for \s-1XPA\s0.


The \s-1XPA\s0 messaging system provides seamless communication between many kinds of Unix programs, including X programs and Tcl/Tk programs. It also provides an easy way for users to communicate with XPA-enabled programs by executing \s-1XPA\s0 client commands in the shell or by utilizing such commands in scripts. Because \s-1XPA\s0 works both at the programming level and the shell level, it is a powerful tool for unifying any analysis environment: users and programmers have great flexibility in choosing the best level or levels at which to access \s-1XPA\s0 services, and client access can be extended or modified easily at any time.

A program becomes an XPA-enabled server by defining named points of public access through which data and commands can be exchanged with other client programs (and users). Using standard \s-1TCP\s0 sockets as a transport mechanism, \s-1XPA\s0 supports both single-point and broadcast messaging to and from these servers. It supports direct communication between clients and servers, or indirect communication via an intermediate message bus emulation program. Host-based access control is implemented, as is as the ability to communicate with \s-1XPA\s0 servers across a network.

\s-1XPA\s0 implements a layered interface that is designed to be useful both to software developers and to users. The interface consists of a library of \s-1XPA\s0 client and server routines for use in C/\*(C+ programs and a suite of high-level user programs built on top of these libraries. Using the \s-1XPA\s0 library, access points can be added to Tcl/Tk programs, Xt programs, or to Unix programs that use the \s-1XPA\s0 event loop or any event loop based on select(). Client access subroutines can be added to any Tcl/Tk, Xt, or Unix program. Client access also is supported at the command line via a suite of high-level programs.

Choose from the following topics:

  • Introduction to \s-1XPA\s0 [xpaintro(7)]

  • Access Point Names and Templates [xpatemplate(7)]

  • Getting Common Information About Access Points [xpacommon(7)]

  • Communication Methods [xpamethod(7)]

  • Communication Between Hosts [xpainet(7)]

  • Distinguishing Users [xpausers(7)]

  • \s-1XPA\s0 User Programs

    • xpaget: get data and info [xpaget\|(1)]

    • xpaset: send data and info [xpaset\|(1)]

    • xpainfo: send info alert [xpainfo\|(1)]

    • xpaaccess: get access point info [xpaaccess\|(1)]

    • xpamb: message bus emulation [xpamb\|(1)]

    • xpans: the \s-1XPA\s0 name server [xpans\|(1)]

  • \s-1XPA\s0 Server Routines

    • XPANew: define a new access point [xpanew\|(3)]

    • XPACmdNew: define a new command access point [xpacmdnew\|(3)]

    • XPACmdAdd: add a command [xpacmdadd\|(3)]

    • XPACmdDel: delete a command [xpacmddel\|(3)]

    • XPAInfoNew: define an info access point [xpainfonew\|(3)]

    • XPAFree: free an access point [xpafree\|(3)]

    • XPAMainLoop: event loop for select server [xpamainloop\|(3)]

    • XPAPoll: poll for \s-1XPA\s0 events [xpapoll\|(3)]

    • XPACleanup: release reserved \s-1XPA\s0 memory [xpacleanup\|(3)]

    • \s-1XPA\s0 Server Macros: accessing structure internals [xpamacros\|(3)]

    • \s-1XPA\s0 Race Conditions: how to avoid them [xparace\|(3)]

    • \s-1XPA\s0 Out of Memory (\s-1OOM\s0) errors [xpaoom\|(3)]

  • \s-1XPA\s0 Client Routines

    • XPAOpen: open a persistent client connection [xpaopen\|(3)]

    • XPAClose: close persistent client connection [xpaclose\|(3)]

    • XPAGet: get data [xpaget\|(3)]

    • XPASet: send data or commands [xpaset\|(3)]

    • XPAInfo: send an info alert [xpainfo\|(3)]

    • XPAGetFd: get data and write to an fd [xpagetfd\|(3)]

    • XPASetFd: read data from and fd and send [xpasetfd\|(3)]

    • XPANSLookup: look up an access point [xpanslookup\|(3)]

    • XPAAccess: get access info [xpaaccess\|(3)]

    • The XPA/Xt Interface: Xt interface to \s-1XPA\s0 [xpaxt(7)]

    • The XPA/Tcl Interface: Tcl interface to \s-1XPA\s0 [xpa(3tcl)]

  • Tailoring the \s-1XPA\s0 Environment

  • Miscellaneous

    • Where to Find Example/Test Code

    • User Changes Between \s-1XPA\s0 1.0 and 2.0

    • \s-1API\s0 Changes Between \s-1XPA\s0 1.0 and 2.0

    • What Does \s-1XPA\s0 Stand For, Anyway?