Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'alin/MR-551-CanisterQueue' into 'master'
feat: [MR-551] Implement `CanisterQueue` An `InputQueue` / `OutputQueue` replacement that holds references into a `MessagePool` (for guaranteed response or best-effort messages) instead of the messages themselves (well, `Arcs`). It can also hold a placeholder for a locally generated (i.e. is `SYS_TRANSIENT`) drop / timeout reject response. It maintains explicit `request_slots` and `response_slots` stats (and implicitly tracks response slot reservations, as the difference between `response_slots` and the actual number of enqueued responses). `push_request()` and `push_response()` expect the caller to have checked that a request or, respectively, response slot is available before, so they are infallible (panicking if no slot is available). This allows the caller to first check slot availability; on success, insert into the pool; and be guaranteed that the resulting message reference can be enqueued. See merge request dfinity-lab/public/ic!18503
- Loading branch information