В QNX, как управлять соединениями IPC между сервером и клиентом? - PullRequest
0 голосов
/ 02 октября 2018

Первоначально я назвал вопрос как «В QNX, в чем разница между _PULSE_CODE_DISCONNECT и _PULSE_CODE_COIDDEATH?».Тем не менее, я думаю, что мой вопрос немного шире.

Я реализовал сервер IPC с использованием ОС QNX Neutrino 6.6.0.По сути, у меня есть сервер, который запрашивает информацию о конфигурации, такую ​​как настройки и прочее.Он также принимает изменения в настройках.Это позволяет клиентам подписаться на него.Это означает, что после подписки, если изменение произойдет с настройкой, сервер уведомит других клиентов.

Пока все хорошо.Этот материал до этого момента имеет смысл для меня.Что мне не ясно, так это подходящий способ справиться с отключением клиента или умиранием процесса.

Прямо сейчас я получаю _PULSE_CODE_DISCONNECT на моем сервере.Что именно это означает?Я не получаю _PULSE_CODE_COIDDEATH, чего я и ожидал.

Я думаю, в частности, я немного запутался в том, что такое CID против Scoid в QNX.

1 Ответ

0 голосов
/ 26 октября 2018

Получение _PULSE_CODE_COIDDEATH зависит от флагов, которые вы установили при создании канала.Чтобы получить этот импульс, необходимо установить флаг канала _NTO_CHF_COID_DISCONNECT.

. _PULSE_CODE_DISCONNECT относится к флагу канала _NTO_CHF_DISCONNECT, чтобы получать импульс, когда все соединения отключены.

См. Документацию для ChannelCreate: http://www.qnx.com/developers/docs/6.6.0_anm11_wf10/index.html#com.qnx.doc.neutrino.lib_ref/topic/c/channelcreate.html

Код - это идентификатор соединения, который вы получаете при подключении к каналу через ConnectAttach.scoid - это идентификатор соединения с сервером (присваивается внутри), который вы получаете в импульсе, о котором говорите.В контексте получения и ответа сообщения ядро ​​направляет ответ клиенту.

Кроме того, я понимаю, что если вы получаете _PULSE_CODE_COIDDEATH, вам нужно выполнить очистку, вызвав ConnectDetach(scoid) где scoidот пульса.

...