struct CCL::Web::IWebFileService

Overview

Interface to mount server volumes into the virtual file system. More…

#include <iwebfileservice.h>

struct IWebFileService: public CCL::IUnknown
{
    // fields

    static const CCL::String kProtocol;

    // methods

    virtual tresult CCL_API mountFileServer (
        UrlRef serverUrl,
        StringRef name,
        StringRef label,
        IWebCredentials* credentials = nullptr,
        StringRef type = nullptr,
        IUnknown* serverHandler = nullptr
    ) = 0;

    virtual tresult CCL_API unmountFileServer (
        StringRef name,
        tbool deferred = false
    ) = 0;

    virtual tresult CCL_API remountFileServer (
        StringRef name,
        IWebCredentials* newCredentials,
        const IUrl* newUrl = nullptr
    ) = 0;

    virtual tbool CCL_API isMounted (
        UrlRef serverUrl,
        IWebCredentials* credentials = nullptr
    ) = 0;

    virtual tresult CCL_API translateServerUrl (
        IUrl& webfsUrl,
        UrlRef serverUrl,
        IWebCredentials* credentials = nullptr
    ) = 0;

    virtual tresult CCL_API translateWebfsUrl (IUrl& serverUrl, UrlRef webfsUrl) = 0;
    virtual tresult CCL_API terminate () = 0;
    virtual tresult CCL_API openHandler (UrlRef webfsUrl, UIDRef iid, void** object) = 0;

    template  <class Interface>
    Interface* openHandler (UrlRef webfsUrl);

    virtual IFileDescriptor*CCL_API openFileItem (UrlRef webfsUrl) = 0;

    virtual tresult CCL_API requestDirectory (
        IObserver* observer,
        UrlRef webfsUrl,
        tbool async = true
    ) = 0;

    virtual tresult CCL_API discardDirectory (UrlRef webfsUrl, tbool async = true) = 0;

    virtual tresult CCL_API scheduleTask (
        IObserver* observer,
        UrlRef webfsUrl,
        IFileTask* task
    ) = 0;

    virtual tresult CCL_API cancelOperation (IObserver* observer) = 0;
    virtual IRemoteSession*CCL_API openSession (UrlRef webfsUrl) = 0;
    virtual ISearcher*CCL_API createSearcher (ISearchDescription& description) = 0;

    virtual tresult CCL_API createDownload (
        ITransfer*& transfer,
        UrlRef webfsUrl,
        UrlRef localPath
    ) = 0;

    virtual tresult CCL_API createUpload (
        ITransfer*& transfer,
        UrlRef webfsUrl,
        UrlRef localPath
    ) = 0;

    virtual ITriggerAction*CCL_API createDirectoryChangedAction (UrlRef webfsUrl) = 0;
};

Inherited Members

public:
    // methods

    virtual tresult CCL_API queryInterface (UIDRef iid, void** ptr) = 0;
    virtual unsigned int CCL_API retain () = 0;
    virtual unsigned int CCL_API release () = 0;

Detailed Documentation

Interface to mount server volumes into the virtual file system.

Threading Policy: File servers can be mounted/unmounted by the main thread only, otherwise the methods will fail with kResultWrongThread!

Fields

static const CCL::String kProtocol

Web File Service URL protocol.

Methods

virtual tresult CCL_API mountFileServer (
    UrlRef serverUrl,
    StringRef name,
    StringRef label,
    IWebCredentials* credentials = nullptr,
    StringRef type = nullptr,
    IUnknown* serverHandler = nullptr
) = 0

Mount file server.

virtual tresult CCL_API unmountFileServer (
    StringRef name,
    tbool deferred = false
) = 0

Unmount file server.

virtual tresult CCL_API remountFileServer (
    StringRef name,
    IWebCredentials* newCredentials,
    const IUrl* newUrl = nullptr
) = 0

Remount file server with new credentials, and optionally new URL.

virtual tbool CCL_API isMounted (
    UrlRef serverUrl,
    IWebCredentials* credentials = nullptr
) = 0

Check if file server is already mounted.

virtual tresult CCL_API translateServerUrl (
    IUrl& webfsUrl,
    UrlRef serverUrl,
    IWebCredentials* credentials = nullptr
) = 0

Translate URL on server to its equivalent in WebFS.

virtual tresult CCL_API translateWebfsUrl (IUrl& serverUrl, UrlRef webfsUrl) = 0

Translate URL in WebFS to real URL on server.

virtual tresult CCL_API terminate () = 0

Unmount all file servers and exit threads.

virtual tresult CCL_API openHandler (UrlRef webfsUrl, UIDRef iid, void** object) = 0

Get handler for given volume (can be null, must be released otherwise).

virtual IFileDescriptor*CCL_API openFileItem (UrlRef webfsUrl) = 0

Open file descriptor for given location (can be null, must be released otherwise).

virtual tresult CCL_API requestDirectory (
    IObserver* observer,
    UrlRef webfsUrl,
    tbool async = true
) = 0

Get directory listing.

Main thread must request in background with async = true.

virtual tresult CCL_API discardDirectory (UrlRef webfsUrl, tbool async = true) = 0

Discard cached directory listing at given location.

virtual tresult CCL_API scheduleTask (
    IObserver* observer,
    UrlRef webfsUrl,
    IFileTask* task
) = 0

Schedule file task to be performed in background.

Task is shared.

virtual tresult CCL_API cancelOperation (IObserver* observer) = 0

Cancel asynchronous operation.

virtual IRemoteSession*CCL_API openSession (UrlRef webfsUrl) = 0

Open independent remote session to access given WebFS volume.

This call might block!

virtual ISearcher*CCL_API createSearcher (ISearchDescription& description) = 0

Create searcher for WebFS volume.

virtual tresult CCL_API createDownload (
    ITransfer*& transfer,
    UrlRef webfsUrl,
    UrlRef localPath
) = 0

Create transfer object for downloading given WebFS file.

virtual tresult CCL_API createUpload (
    ITransfer*& transfer,
    UrlRef webfsUrl,
    UrlRef localPath
) = 0

Create transfer object for uploading file to given WebFS folder.

virtual ITriggerAction*CCL_API createDirectoryChangedAction (UrlRef webfsUrl) = 0

Create trigger action for kDirectoryChanged signal.