MCPcopy Create free account
hub / github.com/MITK/MITK / Start

Method Start

Modules/CppMicroServices/src/usModule.cpp:111–170  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

109}
110
111void Module::Start()
112{
113
114 if (d->moduleContext)
115 {
116 MITK_WARN << "Module " << d->info.name << " already started.";
117 return;
118 }
119
120 d->moduleContext = new ModuleContext(this->d);
121
122 typedef ModuleActivator*(*ModuleActivatorHook)(void);
123 ModuleActivatorHook activatorHook = nullptr;
124
125 std::string activator_func = "_us_module_activator_instance_" + d->info.name;
126 void* activatorHookSym = ModuleUtils::GetSymbol(d->info, activator_func.c_str());
127 std::memcpy(&activatorHook, &activatorHookSym, sizeof(void*));
128
129 d->coreCtx->listeners.ModuleChanged(ModuleEvent(ModuleEvent::LOADING, this));
130 // try to get a ModuleActivator instance
131
132 if (activatorHook)
133 {
134 try
135 {
136 d->moduleActivator = activatorHook();
137 }
138 catch (...)
139 {
140 MITK_ERROR << "Creating the module activator of " << d->info.name << " failed";
141 delete d->moduleContext;
142 d->moduleContext = nullptr;
143 throw;
144 }
145
146 try
147 {
148 d->moduleActivator->Load(d->moduleContext);
149 }
150 catch (...)
151 {
152 MITK_ERROR << "Calling the module activator Load() method of " << d->info.name << " failed!";
153 d->moduleActivator = nullptr;
154 delete d->moduleContext;
155 d->moduleContext = nullptr;
156 throw;
157 }
158 }
159
160 if (ModuleSettings::IsAutoLoadingEnabled())
161 {
162 const std::vector<std::string> loadedPaths = AutoLoadModules(d->info);
163 if (!loadedPaths.empty())
164 {
165 d->moduleManifest.SetValue(PROP_AUTOLOADED_MODULES(), Any(loadedPaths));
166 }
167 }
168

Callers 1

RegisterMethod · 0.45

Calls 7

AutoLoadModulesFunction · 0.85
ModuleEventClass · 0.70
AnyClass · 0.70
ModuleChangedMethod · 0.45
LoadMethod · 0.45
emptyMethod · 0.45
SetValueMethod · 0.45

Tested by

no test coverage detected