RamDiskInterface Class Reference

#include <ramdisk.h>

Inheritance diagram for RamDiskInterface:

Detailed Description

A RamDisk provides a complete in-memory file system. It supports a Clone method to efficiently duplicate a whole file system.

Public Types

using ContentCreator = Delegate< Result< IoMemoryRef >()>
 
using PermissionChecker = Delegate< Result< void >(const Url &url)>
 

Public Member Functions

MAXON_METHOD Result< UrlGetRoot ()
 
MAXON_METHOD Result< FileUtilities::ReadDirectoryTreeReceiverMount (const Block< const String > &mountPoint, const Url &source, const Url &mirror)
 
MAXON_METHOD Result< UrlCreateLazyFile (const Block< const String > &path, ContentCreator &&creator)
 
MAXON_METHOD Result< void > SetPermissions (PermissionChecker &&permissions)
 
 MAXON_OBSERVABLE (void, ObservableLoadIntoCacheChange,(const RamDiskRef &ramDisk, Bool finished), ObservableCombinerRunAllComponent)
 
MAXON_METHOD Result< void > ChangeMirrorPath (const Url &oldBase, const Url &newBase)
 

Static Public Member Functions

static MAXON_METHOD Result< Tuple< Bool, Url > > IsInCache (const Url &url)
 
static MAXON_METHOD Result< void > LoadIntoCache (const Url &url, const IoProgressDelegate &progress)
 
static MAXON_METHOD Result< void > RemoveFromCache (const Url &url)
 
static MAXON_METHOD Result< RamDiskRef > Create ()
 
static MAXON_METHOD Result< RamDiskRef > Create (const String &ramdiskId)
 
static MAXON_METHOD Result< void > ChangeRamDiskMirrorPath (const Url &oldBase, const Url &newBase)
 
static MAXON_METHOD RamDiskRef FindExisting (const String &ramdiskId)
 

Private Member Functions

 MAXON_INTERFACE (RamDiskInterface, MAXON_REFERENCE_NORMAL, "net.maxon.misc.interface.ramdisk")
 

Member Typedef Documentation

◆ ContentCreator

using ContentCreator = Delegate<Result<IoMemoryRef>()>

◆ PermissionChecker

using PermissionChecker = Delegate<Result<void>(const Url& url)>

Member Function Documentation

◆ MAXON_INTERFACE()

MAXON_INTERFACE ( RamDiskInterface  ,
MAXON_REFERENCE_NORMAL  ,
"net.maxon.misc.interface.ramdisk"   
)
private

◆ GetRoot()

MAXON_METHOD Result<Url> GetRoot ( )

Returns the Url of the root directory of this RAM disk. The Url has the ramdisk scheme and uses the unique identifier of the RAM disk as authority. Also the returned Url contains a strong reference on this RAM disk, so it suffices to keep the Url alive to keep this RAM disk alive. Likewise all Urls which are derived from the returned Url will contain a strong reference.

Returns
The Url of this RAM disk's root directory.

◆ Mount()

MAXON_METHOD Result<FileUtilities::ReadDirectoryTreeReceiver> Mount ( const Block< const String > &  mountPoint,
const Url source,
const Url mirror 
)

◆ CreateLazyFile()

MAXON_METHOD Result<Url> CreateLazyFile ( const Block< const String > &  path,
ContentCreator &&  creator 
)

Creates a Url for a file whose content is created lazily by the creator Delegate.

Parameters
[in]pathThe path of the file to be created. The file mustn't exist yet.
[in]creatorThe delegate which will create the file's content on first access.
Returns
The Url for the file.

◆ SetPermissions()

MAXON_METHOD Result<void> SetPermissions ( PermissionChecker &&  permissions)

Sets the permission checker for this RAM disk.

Parameters
[in]permissionsDelegate which gets called to check for valid permissions whenever a stream is opened.

◆ MAXON_OBSERVABLE()

MAXON_OBSERVABLE ( void  ,
ObservableLoadIntoCacheChange  ,
(const RamDiskRef &ramDisk, Bool finished)  ,
ObservableCombinerRunAllComponent   
)

◆ IsInCache()

static MAXON_METHOD Result<Tuple<Bool, Url> > IsInCache ( const Url url)
static

IsInCache allows to detect if the url is cached.

Parameters
[in]urlUrl to detect.
Returns
returns the url of the cache if the file cached. If empty no cache exists.

◆ LoadIntoCache()

static MAXON_METHOD Result<void> LoadIntoCache ( const Url url,
const IoProgressDelegate progress 
)
static

◆ RemoveFromCache()

static MAXON_METHOD Result<void> RemoveFromCache ( const Url url)
static

◆ Create() [1/2]

static MAXON_METHOD Result<RamDiskRef> Create ( )
static

◆ Create() [2/2]

static MAXON_METHOD Result<RamDiskRef> Create ( const String ramdiskId)
static

◆ ChangeMirrorPath()

MAXON_METHOD Result<void> ChangeMirrorPath ( const Url oldBase,
const Url newBase 
)

◆ ChangeRamDiskMirrorPath()

static MAXON_METHOD Result<void> ChangeRamDiskMirrorPath ( const Url oldBase,
const Url newBase 
)
static

◆ FindExisting()

static MAXON_METHOD RamDiskRef FindExisting ( const String ramdiskId)
static

FindExisting returns an existing ram disk.

Parameters
[in]ramdiskIdId to find
Returns
RamDiskRef on success. Otherwise nullptr.