Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
mitkDataStorageService.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef mitkDataStorageService_h
14 #define mitkDataStorageService_h
15 
16 #include <MitkCoreExports.h>
19 
20 #include <mutex>
21 #include <vector>
22 
23 namespace mitk
24 {
25 
51 {
52 public:
54  static const std::string DEFAULT_LABEL;
55 
60 
62  ~DataStorageService() override;
63 
65  DataStorage::Pointer GetDefaultDataStorage() const override;
66 
68  DataStorage::Pointer GetActiveDataStorage() const override;
69 
72 
74  bool SetActiveDataStorage(const std::string& label) override;
75 
77  bool AddDataStorage(const std::string& label, DataStorage::Pointer storage) override;
78 
80  std::optional<DataStorageReference> CreateDataStorage(const std::string& label) override;
81 
83  std::optional<DataStorageReference> GetDataStorageReference(const std::string& label) const override;
84 
86  std::optional<std::string> GetLabel(const DataStorage* storage) const override;
87 
89  std::vector<std::string> GetAllLabels() const override;
90 
92  std::vector<DataStorageReference> GetAllDataStorages() const override;
93 
95  bool HasDataStorage(const std::string& label) const override;
96 
98  bool RemoveDataStorage(const std::string& label) override;
99 
102 
112 
113 private:
115  DataStorageReference FindStorageByLabel(const std::string& label) const;
116 
117  mutable std::mutex m_Mutex;
118  DataStorageReference m_DefaultStorage;
119  std::string m_ActiveLabel; // Empty means use default
120  std::vector<DataStorageReference> m_Storages;
121  StorageThreadDispatcherBase::Pointer m_Dispatcher;
122 };
123 
124 } // namespace mitk
125 
126 #endif
#define MITKCORE_EXPORT
Lightweight metadata container for DataStorage instances.
Default implementation of IDataStorageService.
DataStorageReference GetActiveDataStorageReference() const override
~DataStorageService() override
Destructor.
std::optional< DataStorageReference > GetDataStorageReference(const std::string &label) const override
std::vector< DataStorageReference > GetAllDataStorages() const override
std::optional< DataStorageReference > CreateDataStorage(const std::string &label) override
DataStorageService()
Constructor. Creates a default StandaloneDataStorage.
DataStorage::Pointer GetDefaultDataStorage() const override
std::optional< std::string > GetLabel(const DataStorage *storage) const override
static const std::string DEFAULT_LABEL
The label used for the default DataStorage.
StorageThreadDispatcherBase * GetDispatcher() const override
std::vector< std::string > GetAllLabels() const override
bool RemoveDataStorage(const std::string &label) override
void SetDispatcher(StorageThreadDispatcherBase *dispatcher)
Set the thread dispatcher for DataStorage operations.
DataStorage::Pointer GetActiveDataStorage() const override
bool AddDataStorage(const std::string &label, DataStorage::Pointer storage) override
bool HasDataStorage(const std::string &label) const override
bool SetActiveDataStorage(const std::string &label) override
Abstract data management class that organizes DataNode objects in a directed acyclic graph.
Service interface for managing DataStorage instances.
Abstract base class for dispatching tasks to the thread that owns DataStorage.
Find image slices visible on a given plane.