Class FlaxStorage
Flax assets storage container.
Inheritance
Assembly: FlaxEngine.dll
File: Engine/Content/Storage/FlaxStorage.h
Syntax
public class FlaxStorage : public Object
Constructors
~FlaxStorage()
FlaxStorage(const StringView& path)
Fields
_chunks
Declaration
protected Array<FlaxChunk* > _chunks
Field Value
|
Array<FlaxChunk >
|
_chunksLock
Declaration
protected intptr _chunksLock = 0
Field Value
|
intptr
|
_file
Declaration
protected ThreadLocal<FileReadStream* > _file
Field Value
|
ThreadLocal<FileReadStream >
|
_files
Declaration
protected intptr _files = 0
Field Value
|
intptr
|
_isUnloadingData
Declaration
protected intptr _isUnloadingData = 0
Field Value
|
intptr
|
_lastRefLostTime
Declaration
protected double _lastRefLostTime
Field Value
|
double
|
_loadLocker
Declaration
protected CriticalSection _loadLocker
Field Value
|
CriticalSection
|
_path
_refCount
Declaration
protected intptr _refCount = 0
Field Value
|
intptr
|
_version
Declaration
protected uint32 _version = 0
Field Value
|
uint32
|
MagicCode
Magic code stored in file header to identify contents.
Declaration
public static int32 MagicCode
Field Value
|
int32
|
OnReloaded
Action fired on storage reloading. bool param means 'wasReloadFail'
Declaration
public Delegate<FlaxStorage* , bool> OnReloaded
Field Value
|
Delegate<FlaxStorage , bool>
|
OnReloading
Action fired on storage reloading.
Declaration
public Delegate<FlaxStorage* > OnReloading
Field Value
|
Delegate<FlaxStorage >
|
Methods
AddChunk(FlaxChunk* chunk)
AddEntry(Entry& e)
Declaration
protected virtual void AddEntry(Entry& e) = 0
Parameters
|
Entry
e
|
AllocateChunk()
Allocates the new chunk within a storage container (if it's possible).
Declaration
public FlaxChunk* AllocateChunk()
Returns
|
FlaxChunk
Allocated chunk or null if cannot. |
ChangeAssetID(Entry& e, const Guid& newId)
Changes the asset identifier. Warning! Changes only ID in storage layer, not dependencies resolving at all!
Declaration
public bool ChangeAssetID(Entry& e, const Guid& newId)
Parameters
|
Entry
e
The asset entry. |
|
Guid
newId
The new identifier. |
Returns
|
bool
True if cannot change data, otherwise false |
CloseFileHandles()
Closes the file handles (it can be modified from the outside).
Declaration
public bool CloseFileHandles()
Returns
|
bool
|
Create(const StringView& path, const Array<AssetInitData>& assets, bool silentMode=false, const CustomData* customData=nullptr)
Creates new FlaxFile using specified assets data.
Declaration
public static bool Create(const StringView& path, const Array<AssetInitData>& assets, bool silentMode=false, const CustomData* customData=nullptr)
Parameters
|
StringView
path
The file path. |
|
Array<AssetInitData>
assets
The assets data to write. |
|
bool
silentMode
In silent mode don't reload opened storage container that is using target file. |
|
CustomData
customData
Custom options. |
Returns
|
bool
True if cannot create package, otherwise false |
Create(const StringView& path, const AssetInitData& asset, bool silentMode=false, const CustomData* customData=nullptr)
Creates new FlaxFile using specified asset data.
Declaration
public static bool Create(const StringView& path, const AssetInitData& asset, bool silentMode=false, const CustomData* customData=nullptr)
Parameters
|
StringView
path
The file path. |
|
AssetInitData
asset
The asset data to write. |
|
bool
silentMode
In silent mode don't reload opened storage container that is using target file. |
|
CustomData
customData
Custom options. |
Returns
|
bool
True if cannot create package, otherwise false |
Create(const StringView& path, Span<AssetInitData> assets, bool silentMode=false, const CustomData* customData=nullptr)
Creates new FlaxFile using specified assets data.
Declaration
public static bool Create(const StringView& path, Span<AssetInitData> assets, bool silentMode=false, const CustomData* customData=nullptr)
Parameters
|
StringView
path
The file path. |
|
Span<AssetInitData>
assets
The assets data to write. |
|
bool
silentMode
In silent mode don't reload opened storage container that is using target file. |
|
CustomData
customData
Custom options. |
Returns
|
bool
True if cannot create package, otherwise false |
Create(WriteStream* stream, Span<AssetInitData> assets, const CustomData* customData=nullptr)
Creates new FlaxFile using specified assets data.
Declaration
public static bool Create(WriteStream* stream, Span<AssetInitData> assets, const CustomData* customData=nullptr)
Parameters
|
WriteStream
stream
The output stream. |
|
Span<AssetInitData>
assets
The assets data to write. |
|
CustomData
customData
Custom options. |
Returns
|
bool
True if cannot create package, otherwise false |
Dispose()
Releases storage resources and closes handle to the file.
Declaration
public virtual void Dispose()
GetChunks(Array<FlaxChunk* >& output)
Gets all the chunks in the storage.
Declaration
public void GetChunks(Array<FlaxChunk* >& output) const
Parameters
|
Array<FlaxChunk >
output
The output. |
Returns
|
void
|
GetEntries(Array<Entry>& output)
Gets all the entries in the storage.
Declaration
public virtual void GetEntries(Array<Entry>& output) const = 0
Parameters
|
Array<Entry>
output
The output. |
GetEntriesCount()
Gets amount of entries in the storage.
Declaration
public virtual int32 GetEntriesCount() const = 0
Returns
|
int32
|
GetEntry(const Guid& id, Entry& e)
Declaration
protected virtual bool GetEntry(const Guid& id, Entry& e) = 0
Parameters
|
Guid
id
|
|
Entry
e
|
Returns
|
bool
|
GetEntry(int32 index)
Gets the asset entry at given index.
Declaration
public Entry GetEntry(int32 index) const
Parameters
|
int32
index
The asset index. |
Returns
|
Entry
The output. |
GetEntry(int32 index, Entry& value)
Gets the asset entry at given index.
Declaration
public virtual void GetEntry(int32 index, Entry& value) const = 0
Parameters
|
int32
index
The asset index. |
|
Entry
value
The result. |
GetMemoryUsage()
Gets total memory used by chunks (in bytes).
Declaration
public uint32 GetMemoryUsage() const
Returns
|
uint32
|
GetPath()
GetRefCount()
Gets the references count.
Declaration
public uint32 GetRefCount() const
Returns
|
uint32
|
HasAsset(const AssetInfo& info)
Determines whether the specified asset exists in this container.
Declaration
public virtual bool HasAsset(const AssetInfo& info) const = 0
Parameters
|
AssetInfo
info
The asset info. |
Returns
|
bool
True if the specified asset exists in this container, otherwise false. |
HasAsset(const Guid& id)
Determines whether the specified asset exists in this container.
Declaration
public virtual bool HasAsset(const Guid& id) const = 0
Parameters
|
Guid
id
The asset identifier. |
Returns
|
bool
True if the specified asset exists in this container, otherwise false. |
IsDisposed()
Determines whether this instance is disposed.
Declaration
public bool IsDisposed() const
Returns
|
bool
|
IsLoaded()
Determines whether this instance is loaded.
Declaration
public bool IsLoaded() const
Returns
|
bool
|
IsPackage()
Determines whether this storage container is a package.
Declaration
public virtual bool IsPackage() const = 0
Returns
|
bool
|
IsReadOnly()
Checks whenever storage container doesn't allow modifications.
Declaration
public virtual bool IsReadOnly() const = 0
Returns
|
bool
|
Load()
Loads package from the file.
Declaration
public bool Load()
Returns
|
bool
True if cannot load, otherwise false |
LoadAssetChunk(FlaxChunk* chunk)
Loads the asset chunk.
Declaration
public bool LoadAssetChunk(FlaxChunk* chunk)
Parameters
|
FlaxChunk
chunk
The chunk. |
Returns
|
bool
True if cannot load data, otherwise false |
LoadAssetHeader(const Entry& e, AssetInitData& data)
Declaration
protected bool LoadAssetHeader(const Entry& e, AssetInitData& data)
Parameters
|
Entry
e
|
|
AssetInitData
data
|
Returns
|
bool
|
LoadAssetHeader(const Guid& id, AssetInitData& data)
Loads the asset header.
Declaration
public bool LoadAssetHeader(const Guid& id, AssetInitData& data)
Parameters
|
Guid
id
The asset identifier. |
|
AssetInitData
data
The data. |
Returns
|
bool
True if cannot load data, otherwise false |
LoadAssetHeader(const int32 index, AssetInitData& data)
Loads the asset header.
Declaration
public bool LoadAssetHeader(const int32 index, AssetInitData& data)
Parameters
|
int32
index
The asset index. |
|
AssetInitData
data
The data. |
Returns
|
bool
True if cannot load data, otherwise false |
Lock()
Locks the storage container chunks within a code block section (using a local variable that keeps a scope lock).
Declaration
public LockData Lock()
Returns
|
LockData
The scope lock. |
LockChunks()
Locks the storage chunks data to prevent disposing them. Also ensures that file handles won't be closed while chunks are locked.
Declaration
public void LockChunks()
LockSafe()
Locks the storage container chunks within a code block section (using a local variable that keeps a scope lock).
Lock is done with a safe critical section for a ContentStorageManager that prevents to minor issues with threading. Should be used on a separate threads (eg. GameCooker thread).
Declaration
public LockData LockSafe()
Returns
|
LockData
The scope lock. |
OnRename(const StringView& newPath)
OpenFile()
Reload()
Reloads this storage container.
Declaration
public bool Reload()
Returns
|
bool
True if cannot load, otherwise false |
ReloadSilent()
Declaration
protected bool ReloadSilent()
Returns
|
bool
|
Save(const AssetInitData& data, bool silentMode=false)
Saves the specified asset data to the storage container.
Declaration
public bool Save(const AssetInitData& data, bool silentMode=false)
Parameters
|
AssetInitData
data
The data to save. |
|
bool
silentMode
In silent mode don't reload opened storage container that is using target file. |
Returns
|
bool
True if cannot save, otherwise false |
SetEntry(int32 index, const Entry& value)
Sets the asset entry at given index.
Declaration
public virtual void SetEntry(int32 index, const Entry& value) = 0
Parameters
|
int32
index
The asset index. |
|
Entry
value
The input value. |
ShouldDispose()
Checks if storage container should be disposed (it's not used anymore).
Declaration
public bool ShouldDispose() const
Returns
|
bool
|
Tick(double time)
Ticks this instance.
Declaration
public void Tick(double time)
Parameters
|
double
time
|
UnlockChunks()
Unlocks the storage chunks data.
Declaration
public void UnlockChunks()
Returns
|
void
|