|
libpq: корректная асинхронщина вообще возможна с ним?
|
|||
---|---|---|---|
#18+
Проблема: у меня есть открытое асинхронное соединение, которое я в цикле использую: засылаю туда что-то и получаю ответы. Но если кто-то перезагружает сервер, то сокет получает от сервера какие-то входящие сообщения, которые я даже и не ожидаю от него. (И, видимо, сокет закрывается.) При этом соединение даже позволяет вести в себя запись! (не полностью закрытый сокет?) Такая ситуация ни в одном примере не обрабатывается, и не понятно как её обработать вообще - соединение может оборваться в любой момент, в том числе между if(PQstatus() != CONNECTION_BAD) и посылкой туда чего-либо. libpq при неожиданном приёме данных о перезагрузке прямо в консоль сама пишет: Код: plaintext 1. 2. 3. 4.
При этом никаких статусов и ничего не выставляется для самого соединения. В результате, следующей попыткой послать запрос в ту же консольку прилетает такое: message type 0x52 arrived from server while idle message type 0x4b arrived from server while idle message type 0x5a arrived from server while idle Как отлавливать такую ситуацию? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2019, 18:39 |
|
libpq: корректная асинхронщина вообще возможна с ним?
|
|||
---|---|---|---|
#18+
Дополню: последующие попытки заслать в соединение запрос не терпят неудачу! А ожидание ответа из этого сокета отваливается по тайм-ауту. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2019, 18:42 |
|
|
start [/forum/topic.php?fid=53&msg=39803571&tid=1995239]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 270ms |
total: | 423ms |
0 / 0 |