Daemon Connection
Класс для управления пакетами через демон market. Подробнее…
Подключение: | #include <market/daemon-connection.hpp> |
Публичные функции
const std::string & | GetArchitecture () const Получает имя архитектуры устройства, совместимое с именами архитектуры пакета RPM. Подробнее… |
const std::string & | GetAuroraVersion () const Получает версию операционной системы, установленной на устройстве. Подробнее… |
Result<Operation> | GetActiveOperation (const OperationUUID &operationUUID) const Получает активную операцию с помощью операции UUID. Подробнее… |
std::vector<Operation> | GetActiveOperations () const Получает список операций, которые на данный момент не завершены. Подробнее… |
std::vector<Operation> | GetCompletedOperations () const Возвращает список операций, которые завершились, пока двоичный файл, создавший эти операции, не был запущен. Подробнее… |
Result<Package> | GetPackage (const std::string &packageID) const Получает установленный пакет по идентификатору пакета. Подробнее… |
std::vector<Package> | GetPackageList () const Получает список установленных пакетов. Подробнее… |
std::vector<Package> | GetPackageList (const PackageFilter &filter) const Получает список установленных пакетов, удовлетворяющих правилам фильтрации. Подробнее… |
Result<OperationUUID> | CreateOperation (const OperationRequest &request) const Создает операцию для данного OperationRequest и отправляет эту операцию в очередь обработки. Подробнее… |
EventSubscription | SubscribeToEvent (EventType eventType, const OnEventFunc &func) const Добавляет функцию обработчика событий в очередь обработчиков, которые будут вызываться один за другим при возникновении указанного события. Подробнее… |
void | UnsubscribeFromEvent (const EventSubscription &subscription) Отписывает от события. Подробнее… |
Result<void> | Start (const std::string &packageID) const Запускает приложение. Подробнее… |
Result<void> | Restart (const std::string &packageID) const Перезапускает приложение. Подробнее… |
operator bool () const Проверяет, удалось ли подключение к демону. Подробнее… |
Дружественные функции
DaemonConnection | GetDaemonConnection () Возвращает единственное соединение с демоном market. Подробнее… |
Подробное описание
Класс для управления пакетами через демон market.
Примечание
У этого класса нет открытого конструктора. Чтобы получить соединение, следует использовать метод GetDaemonConnection(), который создаёт и возвращает единственное соединение с демоном market.
DaemonConnection daemon = GetDaemonConnection();
Описание функций
CreateOperation()
Result<OperationUUID> Market::DaemonConnection::CreateOperation (const OperationRequest &request) const |
Создает операцию для данного OperationRequest и отправляет эту операцию в очередь обработки.
Примечание
Метод может вернуть результат ошибки, если при создании операции произошла ошибка на стороне демона.
Параметры
request | Запрос на создание операции |
Возвращает
Result, содержащий UUID созданной операции или ошибки.
GetActiveOperation()
Result<Operation> Market::DaemonConnection::GetActiveOperation (const OperationUUID &operationUUID) const |
Получает активную операцию с помощью операции UUID.
Примечание
Метод может вернуть ошибку, если список активных операций не содержит операции с указанным UUID.
Параметры
operationUUID | Уникальный идентификатор операции. |
Возвращает
Result, содержащий активную операцию или ошибку.
GetActiveOperations()
std::vector<Operation> Market::DaemonConnection::GetActiveOperations () const |
Получает список операций, которые на данный момент не завершены.
Примечание
Вызов метода позволит получить активные операции, созданные исполняемым файлом, использующим этот метод. Это означает, что при перезапуске исполняемого файла можно увидеть активные операции, созданные до перезапуска исполняемого файла.
Возвращает
Список активных операций.
GetArchitecture()
const std::string& Market::DaemonConnection::GetArchitecture () const |
Получает имя архитектуры устройства, совместимое с именами архитектуры пакета RPM.
Возвращает
Имя архитектуры устройства.
GetAuroraVersion()
const std::string& Market::DaemonConnection::GetAuroraVersion () const |
Получает версию операционной системы, установленной на устройстве.
Возвращает
Имя архитектуры устройства.
GetCompletedOperations()
std::vector<Operation> Market::DaemonConnection::GetCompletedOperations () const |
Возвращает список операций, которые завершились, пока двоичный файл, создавший эти операции, не был запущен.
Примечание
Завершённые операции берутся из запаса, который очищается при первом запросе завершённых операций. Это означает, что если этот метод вызвать второй раз, не перезапуская исполняемый файл, он вернёт пустой список завершённых операций.
Возвращает
Список выполненных операций.
GetPackage()
Result<Package> Market::DaemonConnection::GetPackage (const std::string &packageID) const |
Получает установленный пакет по идентификатору пакета.
Примечание
Метод может вернуть ошибку, если в списке установленных пакетов нет пакета с указанным идентификатором.
Параметры
packageID | Идентификатор Package (имя пакета). |
Возвращает
Result, содержащий установленный пакет или ошибку.
GetPackageList() [1/2]
std::vector<Package> Market::DaemonConnection::GetPackageList () const |
Получает список установленных пакетов.
Возвращает
Список установленных пакетов.
GetPackageList() [2/2]
std::vector<Package> Market::DaemonConnection::GetPackageList (const PackageFilter &filter) const |
Получает список установленных пакетов, удовлетворяющих правилам фильтрации.
Примечание
Библиотека предоставляет готовые к использованию фильтры, которые можно найти в пространстве имён PackageFilters:
DaemonConnection daemon = GetDaemonConnection();
std::vector<Package> packages;
packages = daemon->GetPackageList(PackageFilters::DeveloperCertificateID("xxx-xxx-xxx"));
packages = daemon->GetPackageList(PackageFilters::DeveloperCertificateSubgroup("regular"));
Возвращает
Отфильтрованный список установленных пакетов.
operator bool()
Market::DaemonConnection::operator bool () const explicit |
Проверяет, удалось ли подключение к демону.
Примечание
Если используются методы неудачного подключения к демону, будет выдано исключение
std::logic_error()
.
DaemonConnection daemon = GetDaemonConnection();
if (!daemon) {
std::cout << "Неуспешное соединение с демоном market" << std::endl;
}
Restart()
Result<void> Market::DaemonConnection::Restart (const std::string &packageID) const |
Перезапускает приложение.
Примечание
Если приложение работало в фоновом режиме, оно переходит на передний план.
Параметры
packageID | packageID приложения, которое необходимо перезапустить. |
Start()
Result<void> Market::DaemonConnection::Start (const std::string &packageID) const |
Запускает приложение.
Примечание
Если приложение работало в фоновом режиме, оно переходит на передний план.
Параметры
packageID | packageID приложения, которое должно быть запущено. |
SubscribeToEvent()
EventSubscription Market::DaemonConnection::SubscribeToEvent (EventType eventType, const OnEventFunc &func ) const |
Добавляет функцию обработчика событий в очередь обработчиков, которые будут вызываться один за другим при возникновении указанного события.
Клиент демона market увидит события PackageInstalled, PackageUpgraded и PackageRemoved, которые произошли во время запуска операции другим клиентом демона market.
Клиент демона market будет видеть события OperationStatusChanged только для тех операций, которые были созданы этим клиентом.
Примечание
В настоящее время после повторного подключения клиента к демону, например, при перезапуске исполняемого файла, нет возможности отслеживать операции, созданные при предыдущем запуске, путём подписки на сигнал OperationStatusChanged.
Примечание
Для событий установки, обновления и удаления пакета необходимо использовать обратный вызов типа OnPackageEventFunc. Для событий, связанных с изменением статуса операции, необходимо использовать обратный вызов типа OnOperationEventFunc.
Примечание
Если тип обратного вызова не соответствует типу события, будет выброшено исключение
std::logic_error
.
Примечание
Класс EventSubscription автоматически отключает подписку клиента демона market от событий, связанных с этой подпиской на событие, когда деструктор вызывается в целях безопасности памяти. Это значит, что клиенту нужно где-то сохранить эту подписку.
Примечание
В настоящее время клиент может прослушивать события, только если клиентское приложение использует GMainLoop, например приложение, созданное с помощью Qt.
Параметры
eventType | Тип события |
func | Обратный вызов, который будет вызываться при возникновении события. |
DaemonConnection daemon = GetDaemonConnection();
std::vector<EventSubscription> subscriptions = {
daemon.SubscribeToEvent(EventType::PackageInstalled, [](const Package &package) { ... }),
daemon.SubscribeToEvent(EventType::OperationStatusChanged, [](const Operation &operation) { ... }),
};
Возвращает
Экземпляр класса EventSubscription, который управляет созданной подпиской на события.
UnsubscribeFromEvent()
void Market::DaemonConnection::UnsubscribeFromEvent (const EventSubscription &subscription) |
Отписывает от события.
Примечание
Ничего не произойдёт, если передать этому методу экземпляр класса EventSubscription, подписка на который уже была отменена ранее.
Параметры
subscription | Подписка на событие, от которой нужно отказаться. |
Описание дружественных и связанных функций
GetDaemonConnection
DaemonConnection GetDaemonConnection () friend |
Возвращает единственное соединение с демоном market.
Примечание
Приложение, использующее этот метод, должно проверить успешность подключения. Если используются
методы неудачного подключения к демону, будет выдано исключение std::logic_error()
.
DaemonConnection daemon = GetDaemonConnection();
if (!daemon) {
std::cout << "Неуспешное соединение с демоном market" << std::endl;
}