FOSSredder 0.5.0
Loading...
Searching...
No Matches
WorkspaceSession.h
Go to the documentation of this file.
1
5
6#pragma once
7
13
14#include <functional>
15#include <memory>
16#include <string>
17
18namespace core::application {
19
24public:
26
31 explicit WorkspaceSession(std::unique_ptr<core::ports::storage::IStorageManager> storageManager);
32
33 const core::application::workspace::WorkspaceSessionState& state() const noexcept { return document_; }
35 const core::domain::catalog::WorkspaceCatalog& catalogState() const noexcept { return document_.catalog; }
36 core::domain::catalog::WorkspaceCatalog& mutableCatalogState() noexcept { return document_.catalog; }
37 const std::string& currentPath() const noexcept;
38
40 void setErrorReporter(std::shared_ptr<core::ports::diagnostics::IErrorReporter> reporter);
41 void setAtomicStoreSave(core::ports::storage::IStorageManager::AtomicStoreSave saveFn);
42 void setAtomicStoreLoad(core::ports::storage::IStorageManager::AtomicStoreLoad loadFn);
43 void setDeletionImpactCallback(core::ports::storage::IStorageManager::DeletionImpactCallback cb);
44
45 void openLatest();
46 void newFile(const std::string& path);
47 void openFile(const std::string& path);
48 void saveFile();
49 void saveFileAs(const std::string& path);
51 void commit();
52 void notifyState();
53
54private:
55 void reportException(core::errors::ErrorSeverity severity,
56 const char* origin,
57 std::exception_ptr exception) const;
58
59 std::unique_ptr<core::ports::storage::IStorageManager> storageManager_;
60 core::application::workspace::WorkspaceSessionState document_;
61 StateChanged onStateChanged_;
62 std::shared_ptr<core::ports::diagnostics::IErrorReporter> errorReporter_;
63 core::ports::storage::IStorageManager::DeletionImpactCallback onDeletionImpact_;
64};
65
66} // namespace core::application
Declares deleted-id summaries reported after workspace mutations.
Declares the structured diagnostics reporting port.
Storage manager port used by application services.
Domain aggregate that stores catalog entities for one workspace.
Internal mutable workspace session state for application services.
void setAtomicStoreLoad(core::ports::storage::IStorageManager::AtomicStoreLoad loadFn)
void newFile(const std::string &path)
void setDeletionImpactCallback(core::ports::storage::IStorageManager::DeletionImpactCallback cb)
void setStateChangedCallback(StateChanged cb)
const core::application::workspace::WorkspaceSessionState & state() const noexcept
core::application::workspace::WorkspaceSessionState & mutableState() noexcept
void setErrorReporter(std::shared_ptr< core::ports::diagnostics::IErrorReporter > reporter)
void commit()
Persists the session when a file is open and notifies listeners.
const core::domain::catalog::WorkspaceCatalog & catalogState() const noexcept
void saveFileAs(const std::string &path)
core::domain::catalog::WorkspaceCatalog & mutableCatalogState() noexcept
const std::string & currentPath() const noexcept
void openFile(const std::string &path)
std::function< void(const core::application::workspace::WorkspaceSessionState &)> StateChanged
void setAtomicStoreSave(core::ports::storage::IStorageManager::AtomicStoreSave saveFn)
WorkspaceSession(std::unique_ptr< core::ports::storage::IStorageManager > storageManager)
Creates a session over an existing storage manager.