Сервер xmlrpc в dll, посылающий сигнал себе? - PullRequest
0 голосов
/ 28 декабря 2010

Я пишу некоторые библиотеки DLL (для Windows в MSVC ++ 2008), которые предоставляют некоторые функции в качестве сервера xmlrpc. Для реализации сервера xmlrpc я использую библиотеку xmlrpc-c.

Я могу запустить сервер xmlrpc несколькими способами. Более интересны:

  • метод запуска - Это запустит сервер xmlrpc навсегда, поэтому dll не сможет контролировать, пока сервер не будет прерван.
  • метод runOnce - это будет запускать сервер xmlrpc только для обработки одного RPC. И если нет запроса, он будет ждать этого.

Я не могу долго держать под контролем dll. Мне нужно обработать некоторые RPC и вернуть управление программе, которая использует dll. И обработайте следующие RPC, когда DLL снова вернется к управлению.

runOnce выглядит нормально. Но есть вероятность, что не будет RPC для обработки, и он будет ждать одного. Это недопустимо.

Существует также одно исключение:

runOnce прерывает ожидание запрос на подключение и возврат немедленно, если процесс получает сигнал. Обратите внимание, что если у вас нет обработчик для этого сигнала, сигнал вероятно, убьет весь процесс, поэтому установите обработчик сигнала - даже один это ничего не делает - если вы хотите использовать это. Но до Xmlrpc-c 1.06 (Июнь 2006 г.), сигналы не действуют - нет способа заставить runOnce прервать ожидание и возврат.

Могу ли я использовать его в качестве обходного пути и вернуть контроль над dll? Можно ли отправить сигнал от dll на себя? Как это работает на Windows?

Или, может быть, есть лучшее решение этой проблемы?

1 Ответ

0 голосов
/ 04 января 2011

Сигналы (того типа, который делает преждевременным прерывание вызова библиотеки Xmlrpc-c) не существуют в Windows.

Лучшее решение - создать новый поток для сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...