LINUX.ORG.RU

ZeroMQ

 , ,


0

2

Есть клиент-серверная программа - банк и клиент. Клиент может отправлять деньги, запрашивать сумму, проверять счет.

Как реализовать возможность временной приостановки работы сервера без выключения? Сообщения серверу можно отправлять, но ответы сервер не отправляет до возобновления работы.

Ответ на: комментарий от crarkie

Понял. 1)Как временно приостановить работу сервера? 2)Как проверять приостановлен сервер или нет(при отправке из очереди)?

timas-cs
() автор топика
Ответ на: комментарий от timas-cs

Сделать флаг, который указывает статус сервера. В eventloop-е проверять его. Если установлен стоп, то пропускаем обработку, иначе обрабатываем события в очереди. Ну это сходу, самое простое и банальное решение

crarkie
()
Ответ на: комментарий от timas-cs

разработать протокол, например актор отсылает серверу сообщение и ложится в очередь ожидающих, при получении нужного ответа просыпается для его обработки, при неполучении выпадает по таймауту (Сервер лежит) или не выпадает (сервер ответит когда встанет)

anonymous
()
Ответ на: комментарий от timas-cs

1)Как временно приостановить работу сервера?

Сервер должен уметь в состояние, когда он не забирает сообщения из очереди.

2)Как проверять приостановлен сервер или нет(при отправке из очереди)?

А зачем? Сервер сам забирает запросы из очереди и обрабатывает. Если он остановлен, то естественное очередь растёт или как минимум не уменьшается.

vvn_black ★★★★★
()

Неработать сервер должен в определенные промежутки времени? Или ждать сигнала от юзера на вход? Или читать из файла, что надо остановиться/включиться?

Глобальный флаг тебе в руки и обработчик событий (время/сигнал/файл).

Deleted
()

Отлично, разобрался. Спасибо большое всем, кто откликнулся.

timas-cs
() автор топика
Ответ на: комментарий от timas-cs

2)Как проверять приостановлен сервер или нет(при отправке из очереди)?

Сервер сам должен подключаться к очереди и запрашивать из нее данные. Для оповещения сервера со стороны очереди о новых данных, сервер оставляет подключение для оповещений. Если сервер выключен, очередь либо не сможет отправить оповещение (получит ошибку записи в сокет), либо уже будет знать, что соединение разорвано.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.