m_repository_addons(),
m_has_been_updated(false),
m_install_request(),
- m_install_status(),
m_transfer_status()
{
PHYSFS_mkdir(m_addon_directory.c_str());
return m_has_been_updated;
}
-AddonManager::InstallStatusPtr
+TransferStatusPtr
AddonManager::request_check_online()
{
- if (m_install_status)
+ if (m_transfer_status)
{
- throw std::runtime_error("only one addon install request allowed at a time");
+ throw std::runtime_error("only async request can be made to AddonManager at a time");
}
else
{
m_repository_addons = parse_addon_infos("/addons/repository.nfo");
m_has_been_updated = true;
- if (m_install_status->callback)
- {
- m_install_status->callback();
- }
-
- m_install_status = {};
m_transfer_status = {};
});
- m_install_status = std::make_shared<InstallStatus>();
- return m_install_status;
+ return m_transfer_status;
}
}
m_has_been_updated = true;
}
-AddonManager::InstallStatusPtr
+TransferStatusPtr
AddonManager::request_install_addon(const AddonId& addon_id)
{
- if (m_install_status)
+ if (m_transfer_status)
{
throw std::runtime_error("only one addon install request allowed at a time");
}
}
}
- // signal that the request is done and cleanup
- if (m_install_status->callback)
- {
- m_install_status->callback();
- }
-
m_install_request = {};
- m_install_status = {};
m_transfer_status = {};
});
- m_install_status = std::make_shared<InstallStatus>();
-
- return m_install_status;
+ return m_transfer_status;
}
}
AddonManager::update()
{
m_downloader.update();
-
- if (m_install_status)
- {
- m_install_status->now = m_transfer_status->dlnow;
- m_install_status->total = m_transfer_status->dltotal;
- }
}
void
m_downloader.abort(m_transfer_status->id);
m_install_request = {};
- m_install_status = {};
m_transfer_status = {};
}