Code Structure
Check out https://github.com/microsoft/FASTER. More details will be added in future.
Lifecycle of a Read operation for disk data
Here is the sequence of steps from FASTER side, during a Read operation for disk data:
- User issues
Readoperation - We create a
PendingContextobject for the read - The
HandleOperationStatus()call addsPendingContextobject toioPendingRequestsdictionary - Create
AsyncIOContextwhich has pointer to areadyResponsesqueue (also calledcallbackQueue), for that session - Issue IO with
AsyncIOContextas param - …
- IO callback accesses
readyResponsesqueue, and enqueues the result in there (result is just theAsyncIOContextitself) - …
- User calls
CompletePendingon session, which does this:- Dequeue entry from
readyResponsesqueue - Remove item from
ioPendingRequestsdictionary - Finally return result to user via
ReadCompletionCallback
- Dequeue entry from