Обнаружение изменения состояния принтера с помощью Cups API

Используя Cups c api, я могу видеть состояние принтера (например, пауза, печать, замятие и т. д.). Сейчас я пытаюсь прослушивать или блокировать изменение состояния принтера. В конечном счете, я хочу видеть состояние принтеров в режиме реального времени, но я не хочу, чтобы чашки с задержкой рассылали спам с запросами атрибутов принтера.

Я видел много функций и тегов в исходном коде и документации, которые намекают на какую-то систему событий, но я не смог понять, как ее использовать. Любая помощь приветствуется, даже просто указывая мне на правильную функцию.

Я использовал этот пример в своей текущей реализации для получения информации о состоянии. http://cups-dev.easysw.narkive.com/9RO0OBnZ/how-to-get-printer-status-via-cups-api


person Kyle Berezin    schedule 27.03.2017    source источник


Ответы (1)


В конце концов, это был очень сложный вопрос, и для его выяснения потребовалось много работы. Единственный разумный способ, который я нашел для прослушивания изменений, — это использовать систему уведомлений rss. Я бы посоветовал не пытаться сделать свой собственный модуль уведомлений, я потратил неделю своей жизни на это (я даже не уверен, что это возможно). Используйте Create-Printer-Subscription с uri, например rss://localhost:8000. Вам, конечно, понадобится слушатель, ожидающий данных xml.

Я разместил простой инструмент отладки, который я сделал с помощью java/jna здесь. Выберите 2, чтобы настроить подписку, однако вам нужно будет прослушивать данные самостоятельно.

person Kyle Berezin    schedule 10.08.2017