CHAI SDK  Version 1.3
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
Input, Output, Pipe

Inputs and Outputs are used to receive standard application messaging. It is possible to connect several Inputs to a single Output (multicast sending), but also several Outputs to a single Input (merging).

It is possible to enumerate Inputs and Outputs related to a Device, allowing third party applications such as the CopperLan Manager to establish connections between them.

Pipes are used for one-to-one bidirectional messaging between peers, it is not enumerable and dedicated to custom messaging implementations, and this, when usage of Outputs and Inputs is not adequate. Pipe use should be avoided if possible and restricted to very specific implementations.

Input

CPNS::IInput (inheriting from CPNS::IObject) is a destination endpoint for standard application messages (messages deriving from CPNS::IBaseMessage interface). It is notified on incoming message, or when a source endpoint is added or removed.

An Input has a name and capabilities. Input and Output capabilities are sharing the same enum flags (CPNS::Enums::InOutCapabilities). So it is easy to determine if an Input is matching an Output capabilities.

An Input can be defined as a Clock Listener, enabling additional features.

A Device exposes the combination of the Input Capabilities for its whole set of Inputs.

Output

CPNS::IOutput (inheriting from CPNS::IObject) is used to send standard application messages. It is notified when a destination endpoint is added or removed, on handshaking/flow control status change, or on remote parameter current value update, destination set change, and current flow control.

An Output has a name and capabilities (see above).

An Output can be defined as Clock Source and/or Clock Controller, enabling additional features.

A Device exposes the combination of the Output Capabilities for its whole set of Outputs.

An Output can be locked to avoid third party applications changing its destination set. It can also be set to support only one connection.

Pipe

CPNS::IPipe (inheriting from CPNS::IObject) is a one-to-one bidirectional communication object, similar to the fusion of an Input and an Output. It can transport standard application messages.

Pipes are dedicated to specific implementations needing such bidirectional communication. This can be the case of a product split into two parts, such as a hardware only working in conjunction with its related computer application.