У меня есть удаленный сервер, который обрабатывает различные команды, одна из которых - метод извлечения событий.
Выборка событий сразу возвращается, если в очереди есть 1 или более событий, готовых к обработке. Если очередь событий пуста, этот метод не возвращается до истечения нескольких секунд. Таким образом, я не сталкиваюсь с тайм-аутами HTTP / сокетов. В тот момент, когда событие становится доступным, метод сразу возвращается. Таким образом, клиент только устанавливает соединения с сервером, и серверу не нужно устанавливать какие-либо соединения с клиентом.
Этот механизм событий работает хорошо. Я использую библиотеку надстройки для обработки очередей, уведомлений о событиях и т. Д.
Вот проблема. Пока сервер задерживает возврат из метода извлечения событий, в течение этого времени я не могу выдавать какие-либо другие команды.
В исходном коде, XmlRpcDispatch.cpp, я вижу в методе «работа» простой цикл, который использует блокирующий вызов для «выбора».
Похоже, пока обработка метода занята, другие запросы не обрабатываются.
Вопрос: я что-то не вижу и может ли XmlRpcpp (xmlrpc ++) обрабатывать несколько запросов асинхронно? Кто-нибудь знает лучшую библиотеку xmlrpc для C ++? Я не думаю, что библиотека Boost имеет компонент, который позволяет мне выполнять удаленные команды?
На самом деле меня не волнует функция XML или over-HTTP. Мне просто нужно выдавать (асинхронные) команды через TCP в любой форме или форме?
Я с нетерпением жду любой информации, которую кто-либо может предложить.