void UserManagement::commit() { for (unsigned i = 0; i < managers.getCount(); ++i) { IManagement* manager = managers[i].second; if (manager) { LocalStatus status; CheckStatusWrapper statusWrapper(&status); manager->commit(&statusWrapper); if (status.getState() & IStatus::STATE_ERRORS) status_exception::raise(&statusWrapper); PluginManagerInterfacePtr()->releasePlugin(manager); managers[i].second = NULL; } } }
IManagement* UserManagement::registerManager(Auth::Get& getPlugin, const char* plugName) { IManagement* manager = getPlugin.plugin(); fb_assert(manager); // Start new management plugin ... LocalStatus status; CheckStatusWrapper statusWrapper(&status); UserIdInfo idInfo(att); manager->start(&statusWrapper, &idInfo); if (status.getState() & IStatus::STATE_ERRORS) { status_exception::raise(&statusWrapper); } // ... and store it in cache Manager& m(managers.add()); m.first = plugName; m.second = manager; manager->addRef(); return manager; }