Current version: 3.1

Jan 14, 1999 -- Version 3.1 contains support for Typed Event Channels...

What is DataExchange?

DataExchange is a communications support library layered on top of PBIO . In particular, DataExchange provides support for establishing communication between agents, resolving differences between data formats used by multiple agents, forwarding data from agent to agent, and processing data within an agent.

In order to address dynamic client connection and data flow management, DataExchange provides support for a type of generative, or publish/subscribe, communications model .

In describing DataExchange behavior, it is useful to think of an individual DataExchange node as analogous to the pieces of hardware that make up a telephone exchange. Like a note in the telephone network, each DataExchange instance provides services and behavior that contributes to the collective behavior of a set of connected instances. The DataExchange library provides a simple name service to assist in connecting independent DataExchange instances into a functional network. Once the instances are connected, the library provides facilities for connected instances to select the types of messages that they receive, to block messages that they are not interested in, and to control the forwarding of messages to any other instances to which it is connected. To support data processing and analysis, DataExchange also allows application handler functions to be bound to message events.

What platforms does DataExchange support?

  • DataExchange is layered on top of PBIO and runs on the same targets as PBIO does.
  • Like PBIO, DataExchange is distributed with a configure script and should adapt itself to most rational Unix-based platforms.

    Where can I get source and documentation?

    DataExchange source is available for downloading in gzip or compress formats. Both of these distributions also contain a recent PBIO distribution since PBIO is required to build DataExchange. A manual describing DataExchange and containing basic usage information is also available. An older version of this paper exists as GIT-CC-96-17.

    A paper describing PBIO is also available. An earlier version of the PBIO paper appeared as College of Computing Tech Report GIT-CC-94-45. Bibtex entries for the technical reports follows:

      author =       "Greg Eisenhauer and Beth Schroeder",
      title =        "The DataExchange Library",
      institution =  "College of Computing, Georgia Institute of Technology",
      year =         "1996",
      number =       "GIT-CC-96-17",
      note =         "{\it (}",
      author =       "Greg Eisenhauer",
      title =        "Portable Self-Describing Binary Data Streams",
      institution =  "College of Computing, Georgia Institute of Technology",
      year =         "1994",
      number =       "GIT-CC-94-45",
      note =         "{\it (}",

    Known limitations

    Recent DataExchange news.

    Version 3.1 of DataExchange augments the basic Event Channel support with Typed Event Channels. This variant of the basic event channel mechanism transfers typed events in binary form in a heterogenous environment. See the Event Channel document for more information.

    Version 3.0 of DataExchange contains support for Event Channels, a new communications mechanism that use the same underlying communications infrastructure and provide for communication semantics that is in some ways similar to that provided by DataExchange. However, there are important differences that make Event Channels a more desirable communication abstraction for some applications. A more complete description of Event Channels is available

    All recent DataExchange releases support operation under Windows NT. This is a source-level release and may be difficult to compile under NT without environments similar to our development environment. Binary releases are under consideration for the future.

    Debugging DataExchange programs.

    Some general questions about debugging PBIO/DataExchange programs are answered in another document.

    This page is maintained by Greg Eisenhauer
    Last Modified Jun 23, 1999