A channel is a connection between two paries. Each party uses a Connection node to communicate with the other party.
The Connection node contains the following fields:
A name for the partner.
Indicates if the channel is active. If it is inactive, it will reject all requests from the partner.
A unique identifier for the partner's end of the channel.
Indicates that the partner is remote to this server.
For a local partner (remote partner not set), the partner's channel node.
This can be set using a link or entering a node reference (but not both). If a link is given, a node reference for the link is derived.
For remote partners, the URL of the partner's channel.
The public key from the partner that can be used to check partner signatures.
A unique identifier for this end of the channel.
Link to key pair to be used to sign messages sent to the partner.
The channel has to keep track of all its associated workers. It does this by holding within it a Channel Worker for each worker, the local reference of which is derived from the Process identifier used to identify the process.
Each Channel Worker contains within it a record of each request sent to or from the worker, held as a Channel Event. This records the data sent from or to the partner, both in its raw form (with signatures) and in its decoded form. This provides a complete audit trail of the collaboration. Holding the raw data, with signatures, provides a non-repudiable record of exactly what the partner sent.