Expand description
IO requests, results, and the source that fulfils them.
The protocol moves bytes at a range. A source has exactly one other property a consumer may ask for, its length, because a Vortex file cannot be located from its start without it. Nothing else is a request: anything a stage needs that is not bytes at a range is construction-time data for that stage.
Structs§
- Completion
- One finished request: its owner, its request identity, and the answer.
- IoOwner
Id - Opaque owner identity chosen by the caller, unique within a registration scope.
- IoRequest
- One request: a consumer-chosen id and the target it names.
- IoRequest
Id - Consumer-chosen label for one request, unique within the issuing object.
- IoSlot
- One outstanding request at a time, with ids that never repeat within the owner.
- Read
AtIo Source - A simple source that registers batches and performs one fetch per
wait(). Optional hints are declined. Shared reads, prefetching, and priority scheduling belong to a later IO service implementation.
Enums§
- IoIntent
- A stage’s reason for registering bytes. Optional hints may be declined by the service.
- IoResult
- Result for one request. The variant matches the target:
SizeforSize,BytesforRange. The driver checks this before delivering, so a consumer never sees a mismatch. - IoTarget
- What to fetch from the source: its length, or bytes at a range. This enum is closed; see the module documentation.
Traits§
- IoConsumer
- Receives fulfilled requests. Implementations only store; they never compute here.
- IoService
- A byte source’s IO service, shared by everything that reads the source.
- IoSource
- IO registration and dispatch for one registration scope, such as the work descended from one root planner. Services may decline optional hints. Accepted optional work belongs to the source, not to the publishing stage, and lives until the source is cleared or dropped.
Type Aliases§
- IoBatch
- Requests an object publishes together, each exactly once.