1#ifndef MXDISKSTREAMPROVIDER_H
2#define MXDISKSTREAMPROVIDER_H
[AI] Provides a critical section object for mutual exclusion with optional use of OS mutex.
[AI] Represents an action deserialized from SI chunks, holding key animation or script parameters suc...
[AI] Utility list for managing dynamic sequence (DS) objects, provides search and removal by pointer ...
[AI] Represents an action that streams data from a buffer within a DirectScript (DS) media timeline.
[AI] Thread to handle disk-based streaming for MxDiskStreamProvider, running as a worker for disk str...
MxResult StartWithTarget(MxDiskStreamProvider *p_target)
[AI] Starts the thread with a specific MxDiskStreamProvider as its target.
MxResult Run() override
[AI] Entry point for the streaming thread, called to begin the thread's workload.
MxDiskStreamProviderThread()
[AI] Constructs a streaming worker thread for disk streaming provider.
MxDiskStreamProvider * m_target
[AI] Target provider instance for this worker thread.
[AI] Disk-based stream provider for resource loading using background streaming and multithreading.
MxResult FUN_100d1780(MxDSStreamingAction *p_action)
[AI] Schedules a streaming action to read data (SI chunk) from disk and buffers it asynchronously.
const char * ClassName() const override
[AI] Returns the runtime class name.
MxS32 GetStreamBuffersNum() override
[AI] Gets the number of stream buffers/splits for the file, used to drive parallel reads.
MxDSObjectList m_list
[AI] List of streaming actions to be processed/completed by the thread.
MxU32 GetFileSize() override
[AI] Gets the size, in bytes, of the open file/buffer to be streamed.
void PerformWork()
[AI] Performs a single unit of scheduled streaming work, i.e., loading data for queued actions.
void VTable0x20(MxDSAction *p_action) override
[AI] Cancels or reclaims outstanding streaming actions based on object ID, returning associated actio...
MxDiskStreamProviderThread m_thread
[AI] Thread object handling streaming actions asynchronously.
MxBool IsA(const char *p_name) const override
[AI] Tests if the object is of, or derives from, the supplied class name.
MxResult FUN_100d1b20(MxDSStreamingAction *p_action)
[AI] Finalizes merging of streaming buffers and updates streamed data for a given action.
MxResult SetResourceToGet(MxStreamController *p_resource) override
[AI] Opens and prepares a resource for streaming from disk based on the controller's atom (resource k...
static MxBool FUN_100d1af0(MxDSStreamingAction *p_action)
[AI] Returns whether a streaming action can be processed (buffer conditions met).
~MxDiskStreamProvider() override
[AI] Cleans up the disk stream provider, including terminating the worker thread and releasing file a...
MxU32 GetLengthInDWords() override
[AI] Returns file length as dword-count for bulk/integer-based streaming use cases.
MxResult WaitForWorkToComplete()
[AI] Blocks until all scheduled streaming work is finished (used by the streaming worker thread).
MxU32 * GetBufferForDWords() override
[AI] Returns a pointer to the buffer for raw dword access (SI file data block).
MxBool m_unk0x35
[AI] Internal flag signaling available work for the thread or shutdown in progress.
MxDiskStreamProvider()
[AI] Constructs a disk stream provider, initializing critical members and preparing for disk-based st...
MxSemaphore m_busySemaphore
[AI] Semaphore used to synchronize and signal work for the background thread.
MxBool m_remainingWork
[AI] Indicates whether more streaming work remains for the thread.
MxCriticalSection m_criticalSection
[AI] Synchronizes access to the work item queue (m_list).
Implements a lightweight wrapper for Windows semaphores, allowing safe synchronization between thread...
[AI] Controller for streaming and managing multimedia resources and actions during gameplay.
[AI] Abstract base class for stream resource providers in the LEGO Island engine.
[AI] Abstract thread class providing a platform-independent interface for thread management.
#define NULL
[AI] Null pointer value (C/C++ semantics).