Inherits AZ::IO::StreamStackEntry.
|
| StorageDriveWin (const AZStd::vector< AZStd::string_view > &drivePaths, u32 maxFileHandles, u32 maxMetaDataCacheEntries, size_t physicalSectorSize, size_t logicalSectorSize, u32 ioChannelCount, s32 overCommit, ConstructionOptions options) |
|
void | PrepareRequest (FileRequest *request) override |
|
void | QueueRequest (FileRequest *request) override |
|
bool | ExecuteRequests () override |
|
void | UpdateStatus (Status &status) const override |
| Gets a combined status update from all the nodes in the stack.
|
|
void | UpdateCompletionEstimates (AZStd::chrono::steady_clock::time_point now, AZStd::vector< FileRequest * > &internalPending, StreamerContext::PreparedQueue::iterator pendingBegin, StreamerContext::PreparedQueue::iterator pendingEnd) override |
|
void | CollectStatistics (AZStd::vector< Statistic > &statistics) const override |
|
| StreamStackEntry (AZStd::string &&name) |
|
virtual const AZStd::string & | GetName () const |
| Returns the name that uniquely identifies this entry.
|
|
virtual void | SetNext (AZStd::shared_ptr< StreamStackEntry > next) |
|
virtual AZStd::shared_ptr< StreamStackEntry > | GetNext () const |
|
virtual void | SetContext (StreamerContext &context) |
|
virtual void | PrepareRequest (FileRequest *request) |
|
virtual void | QueueRequest (FileRequest *request) |
|
virtual bool | ExecuteRequests () |
|
virtual void | UpdateStatus (Status &status) const |
| Gets a combined status update from all the nodes in the stack.
|
|
virtual void | UpdateCompletionEstimates (AZStd::chrono::steady_clock::time_point now, AZStd::vector< FileRequest * > &internalPending, StreamerContext::PreparedQueue::iterator pendingBegin, StreamerContext::PreparedQueue::iterator pendingEnd) |
|
virtual void | CollectStatistics (AZStd::vector< Statistic > &statistics) const |
|
|
enum class | OpenFileResult { FileOpened
, RequestForwarded
, CacheFull
} |
|
|
OpenFileResult | OpenFile (HANDLE &fileHandle, size_t &cacheSlot, FileRequest *request, const Requests::ReadData &data) |
|
bool | ReadRequest (FileRequest *request) |
|
bool | ReadRequest (FileRequest *request, size_t readSlot) |
|
bool | CancelRequest (FileRequest *cancelRequest, FileRequestPtr &target) |
|
void | FileExistsRequest (FileRequest *request) |
|
void | FileMetaDataRetrievalRequest (FileRequest *request) |
|
size_t | FindInFileHandleCache (const RequestPath &filePath) const |
|
size_t | FindAvailableFileHandleCacheIndex () const |
|
size_t | FindAvailableReadSlot () |
|
size_t | FindInMetaDataCache (const RequestPath &filePath) const |
|
size_t | GetNextMetaDataCacheSlot () |
|
bool | IsServicedByThisDrive (AZ::IO::PathView filePath) const |
|
void | EstimateCompletionTimeForRequest (FileRequest *request, AZStd::chrono::steady_clock::time_point &startTime, const RequestPath *&activeFile, u64 &activeOffset) const |
|
void | EstimateCompletionTimeForRequestChecked (FileRequest *request, AZStd::chrono::steady_clock::time_point startTime, const RequestPath *&activeFile, u64 &activeOffset) const |
|
s32 | CalculateNumAvailableSlots () const |
|
void | FlushCache (const RequestPath &filePath) |
|
void | FlushEntireCache () |
|
bool | FinalizeReads () |
|
void | FinalizeSingleRequest (FileReadStatus &status, size_t readSlot, DWORD numBytesTransferred, bool isCanceled, bool encounteredError) |
|
void | Report (const Requests::ReportData &data) const |
|
|
static const AZStd::chrono::microseconds | s_averageSeekTime |
|
static constexpr size_t | InvalidFileCacheIndex = std::numeric_limits<size_t>::max() |
|
static constexpr size_t | InvalidReadSlotIndex = std::numeric_limits<size_t>::max() |
|
static constexpr size_t | InvalidMetaDataCacheIndex = std::numeric_limits<size_t>::max() |
|
◆ StorageDriveWin()
AZ::IO::StorageDriveWin::StorageDriveWin |
( |
const AZStd::vector< AZStd::string_view > & |
drivePaths, |
|
|
u32 |
maxFileHandles, |
|
|
u32 |
maxMetaDataCacheEntries, |
|
|
size_t |
physicalSectorSize, |
|
|
size_t |
logicalSectorSize, |
|
|
u32 |
ioChannelCount, |
|
|
s32 |
overCommit, |
|
|
ConstructionOptions |
options |
|
) |
| |
Creates an instance of a storage device that's optimized for use on Windows.
- Parameters
-
drivePaths | The paths to the drives that are supported by this device. A single device can have multiple logical disks. |
maxFileHandles | The maximum number of file handles that are cached. Only a small number are needed when running from archives, but it's recommended that a larger number are kept open when reading from loose files. |
maxMetaDataCacheEntires | The maximum number of files to keep meta data, such as the file size, to cache. Only a small number are needed when running from archives, but it's recommended that a larger number are kept open when reading from loose files. |
physicalSectorSize | The minimal sector size as instructed by the device. When unbuffered reads are used the output buffer needs to be aligned to this value. |
logicalSectorSize | The minimal sector size as instructed by the device. When unbuffered reads are used the file size and read offset need to be aligned to this value. |
ioChannelCount | The maximum number of requests that the IO controller driving the device supports. This value will be capped by the maximum number of parallel requests that can be issued per thread. |
overCommit | The number of additional slots that will be reported as available. This makes sure that there are always a few requests pending to avoid starvation. An over-commit that is too large can negatively impact the scheduler's ability to re-order requests for optimal read order. A negative value will under-commit and will avoid saturating the IO controller which can be needed if the drive is used by other applications. |
options | Additional configuration options. See ConstructionOptions for more details. |
◆ CollectStatistics()
Collect various statistics on this stack entry. These are for profiling and debugging purposes only.
Reimplemented from AZ::IO::StreamStackEntry.
◆ ExecuteRequests()
bool AZ::IO::StorageDriveWin::ExecuteRequests |
( |
| ) |
|
|
overridevirtual |
Executes one or more queued requests. This is needed for synchronously executing requests, but asynchronous requests can already be running from the PrepareRequest call in which case this call is ignored.
- Returns
- True if a request was processed, otherwise false.
Reimplemented from AZ::IO::StreamStackEntry.
◆ PrepareRequest()
void AZ::IO::StorageDriveWin::PrepareRequest |
( |
FileRequest * |
request | ) |
|
|
overridevirtual |
Prepare an external request for processing. This can include resolving file paths, create more specific internal requests, etc. The returned will be queued for further processing by QueueRequest and ExecuteRequest.
Reimplemented from AZ::IO::StreamStackEntry.
◆ QueueRequest()
void AZ::IO::StorageDriveWin::QueueRequest |
( |
FileRequest * |
request | ) |
|
|
overridevirtual |
Queues a request to be executed at a later point when ExecuteRequests is called. This can include splitting up the request in more fine-grained steps.
Reimplemented from AZ::IO::StreamStackEntry.
◆ UpdateCompletionEstimates()
Updates the estimate of the time the requests will complete. This generally works by bubbling up the estimation and each stack entry adding it's additional overhead if any. When chaining this call, first call the next entry in the stack before adding the current entry's estimate.
- Parameters
-
now | The current time. This is captured once to avoid repeatedly querying the system clock. |
internalPending | The requests that are pending in the stream stack. These are always estimated as coming after the queued requests. Because this call will go from the top of the stack to the bottom, but estimation is calculated from the bottom to the top, this list should be processed in reverse order. |
pendingBegin | Iterator pointing to the start of the requests that are waiting for a processing slot in the stack. |
pendingEnd | Iterator pointing to the end of the requests that are waiting for a processing slot in the stack. |
Reimplemented from AZ::IO::StreamStackEntry.
◆ UpdateStatus()
void AZ::IO::StorageDriveWin::UpdateStatus |
( |
Status & |
status | ) |
const |
|
overridevirtual |
The documentation for this class was generated from the following file:
- Code/Framework/AzCore/Platform/Windows/AzCore/IO/Streamer/StorageDrive_Windows.h