1. Architecture#

The application owns the control path between the client and server. The server receives the operation type, request size, remote buffer start address, and opaque RDMA descriptor over that control path. cuObjServer then uses a registered local host buffer and an allocated channel to complete the requested GET or PUT operation.

Typical flow:

  1. Create a cuObjServer object with the server address, port, and protocol.

  2. Verify readiness with isConnected().

  3. Allocate a channel with allocateChannelId().

  4. Allocate host memory or provide application-owned host memory.

  5. Register the host memory with registerBuffer().

  6. For each request, call handleGetObject() or handlePutObject().

  7. For asynchronous submissions, call poll() on the same channel.

  8. Complete cleanup with deRegisterBuffer(), free(), and freeChannelId().