CGF Channel
CGF Channel is a data allocation and transport framework. Its features include:
- Multiple transport backends including local shared memory, socket ipc, and NvSciStream, with near zero API differences for applications to switch between them. Code producing or consuming data can be written without knowledge of whether their peer is in the same process, a remote process, or on a different SOC.
- Multicasting from a single producer to multiple consumers.
- Flexibility to transfer many data types and use application-defined data types.
- Buffer pool allocation.
- Fifo or mailbox consumption modes for consumers.
CGF Channels include several different classes which are used together to accomplish its functionality.
- ChannelObject is the abstract, weakly-typed interface which transports the data.
- ChannelFactory serves as a shared context object for all ChannelObjects and is responsible for constructing them.
- ChannelConnector is a utility which connects ChannelObjects to their peer producers and consumers at init-time.
- Ports are lightweight objects that bind to a ChannelObject to provide a strongly-typed interface to allocate and transport data.
- IChannelPacket is the interface that CGF Channels uses to handle type-specific functionality. Applications extend these interfaces in order to define how CGF Channels can allocate and transport their data types.