MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
MayaFlux::Core::SystemBackend Class Referenceabstract

Abstract interface for native OS service backends. More...

#include <SystemBackend.hpp>

+ Collaboration diagram for MayaFlux::Core::SystemBackend:

Public Member Functions

virtual bool initialize ()=0
 Acquire any persistent platform resources required by this backend.
 
virtual bool is_initialized () const =0
 Return true if initialize() has completed successfully.
 
virtual void open_file (FileDialogCallback callback, std::vector< SystemFileFilter > filters, std::filesystem::path start_dir)=0
 Present a native open-file dialog.
 
SystemBackendoperator= (const SystemBackend &)=delete
 
SystemBackendoperator= (SystemBackend &&) noexcept=default
 
virtual void save_file (FileDialogCallback callback, std::string suggested_name, std::vector< SystemFileFilter > filters, std::filesystem::path start_dir)=0
 Present a native save-file dialog.
 
virtual void shutdown ()=0
 Release all platform resources held by this backend.
 
 SystemBackend ()=default
 
 SystemBackend (const SystemBackend &)=delete
 
 SystemBackend (SystemBackend &&) noexcept=default
 
virtual ~SystemBackend ()=default
 

Detailed Description

Abstract interface for native OS service backends.

Implemented per platform: DBusBackend (Linux), COMBackend (Windows), NSBackend (macOS). Portal::System owns a single instance and routes all OS surface calls through it.

Lifecycle is minimal: initialize() acquires any persistent platform resource (e.g. a D-Bus session connection); shutdown() releases it. There is no start()/stop() because no continuous thread is driven at this level - each operation is self-contained.

All dialog operations are non-blocking at the interface level. The callback is invoked exactly once per call, on whichever thread the platform backend uses to deliver its response. Callers that need thread affinity must marshal the result themselves.

Definition at line 54 of file SystemBackend.hpp.


The documentation for this class was generated from the following file: