|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
По протоколам непонятно. Будет FB3 работать с 10-м протоколом или нет? Если нет, то какой минимальный протокол указывать для FB3? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2022, 09:21 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Сам же и отвечаю: с 10м протоколом 3й FB не работает. Рвёт связь с ответом OP_REJECTED без объяснения причин ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2022, 10:10 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
все современные версии ФБ поддерживают от протокола 10 (включительно) и выше. Так что должно работать. Он тебе прямо на op_connect возвращает op_reject? Если да, то покажи содержимое op_connect. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2022, 10:15 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Ну если только в таком виде запрос Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Ответ Код: plaintext
В запросе указываю плагин аутентификации Srp и список плагинов тоже Srp, шифрование вкл. Если же в запросе перечисляю протоколы с 10 по 17, то сервер отвечает нормально с OP_COND_ACCEPT FB V3.0.7.33374 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2022, 10:30 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
10-й протокол это функциональность ФБ 1.5. Какое там шифрование или Srp? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2022, 10:44 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
ArtDen В запросе указываю плагин аутентификации Srp Или вы считаете, что можно скрестить лучшее из двух миров и ходить к новому серверу со старой версией протокола и новыми плагинами? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2022, 10:47 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Я без понятия когда появился Srp. Гугл не помогает. И вообще по версиям протоколов fb гугл умалчивает. Видимо не знаю по каким словам гуглить )) Так в какой версии появился Srp? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2022, 10:53 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
ArtDen Я без понятия когда появился Srp. Гугл не помогает. Если описаниe протокола , которое вам рекомендовали, прямо во введении указывает, что описывает 10-ю и, частично, 11-ю версии протокола, не содержит ничего про плагины и шифрование, то, вероятно, будет алогично, указывать "какие-то там плагины" в этой версии протокола? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2022, 11:04 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Basil A. Sidorov , хорошо, что хоть какое-то описание протокола есть. Но в целом оно малополезное и может служить лишь информацией для краткого ознакомления. Но что-то делать по этому описанию не имеет смысла. В нём про аутентификацию написано только 3 слова: "Buffer User identification". И больше нигде ничего ни слова про это не упоминается. Какие из этого выводы можно делать мне не понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2022, 11:09 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Тогда можно пошариться по исходникам, обнаружить protocol.h и, типа, с удивлением узнать, что: Код: plaintext 1.
А если читать примечания к выпуску , то окажется, что: "From version 3 onward, Firebird’s architecture supports plug-ins." И снова вдумчивое чтение позволяет делать обобщения невиданной глубины. Сарказм, если что. P.S. Вы правда думаете, что существует руководство для начинающих "Как правильно делать собственную реализацию сетевого протокола Firebird"? Или, всё-таки, надо сопоставить ваши хотелки с тем бюджетом времени, которые вы готовы потратить на ещё одну реализацию? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2022, 11:39 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Можно много где рыться и много чего обнаружить, даже то, о чём писал Dimitry Sibiryakov )) Я лишь пытаюсь реализовать хотя бы подключение с аутентификацией по готовым решениям, упрощая всё до как мне кажется необходимого минимума. И соответственно удивляюсь, что с моей точки зрения всё идёт не по плану ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2022, 12:18 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
"Никогда и ничего не доводи до абсурда, ибо человек, желающий трапезовать поздно вечером, рискует трапезовать рано по утру". Не надо делать априорных предположений там, где у вас нет вообще никакого опыта. Если получение опыта требует (много) времени - сопоставьте тот бюджет, который вы готовы потратить и тут хотелку, которая вам, типа, нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2022, 17:05 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Уточню. Statement можно переиспользовать много раз после op_allocate_statement? Не обязательно каждый раз заново аллоцировать новый statement (и освобождать предыдущий) для выполнения нового запроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2022, 09:00 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Но закрывать курсор (op_free_statement + DSQL_close) перед новым prepare необходимо? Или это не обязательно? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2022, 11:09 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
ArtDen, обязательно ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2022, 11:37 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Нужна консультация по op_fetch_response. 1) Может ли сервер прислать ответ с count > 1 (под count имеется ввиду второй параметр) 2) После op_fetch сервер отвечает несколькими op_fetch_response, которые клиент должен вычитывать без отправки доп. команд серверу? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2022, 00:02 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
ArtDen получаешь ровно столько же op_fetch_response, в каждом из них msg_count == 1 поправлюсь - можешь получить меньше, если курсор закончился посередине пачки. В последнем op_fetch_response будет msg_count == 0 (признак EOF). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2022, 10:29 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
пардон, случайно вместо ответа затер предыдущее сообщение :-) ArtDen Нужна консультация по op_fetch_response. 1) Может ли сервер прислать ответ с count > 1 (под count имеется ввиду второй параметр) 2) После op_fetch сервер отвечает несколькими op_fetch_response, которые клиент должен вычитывать без отправки доп. команд серверу? 1) Нет. Ты отправляешь op_fetch с msg_count > 0, получаешь ровно столько же op_fetch_response, в каждом из них msg_count == 1. 2) Строго говоря, не обязательно. Просто чтобы обработать ответ на свою доп. команду, тебе все равно придется вычитать все op_fetch_response из буфера. Но если сильно хочется запросить новую пачку записей до вычитывания предыдущих - почему нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2022, 10:33 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Т.е. отправляя op_fetch с msg_count, я гарантированно получаю op_fetch_response в количестве не более чем msg_count (каждое с msg_count == 1) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2022, 10:42 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Повозившись в отладке, я идею понял так: после отправки op_fetch, я всегда вычитываю все ответы op_fetch_response пока не придёт ответ с msg_count = 0. Причём если у последнего ответа status == 100, то данные в курсоре закончились. А если status == 0, то данные ещё есть и их можно запросить через очередной op_fetch Это правильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2022, 14:42 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
да, все верно ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2022, 17:35 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
Продолжаю мучать ) Хочу понять, когда стоит вызывать op_free_statement с DSQL_close. Понятно, что после выполнения запроса select точно надо. Но если, например, 1) был op_prepare_statement с select, но до op_execute дело не дошло или 2) было выполнение запроса с insert, update или delete? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2022, 21:09 |
|
Асинхронное API для клиента
|
|||
---|---|---|---|
#18+
ArtDenХочу понять, когда стоит вызывать op_free_statement с DSQL_close. В соответствующей функции API. В нём по-любому должна быть функция закрытия курсора. Или ты хочешь делать это автоматически после вытаскивания всего резалт-сета? Тогда не забудь удостовериться, что он однонаправленный и не FOR UPDATE. А то нехорошо получится если пользователь захочет с ним что-нибудь сделать, а ты его уже закрыл... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2022, 23:09 |
|
|
Start [/forum/topic.php?fid=40&tid=1559814&startmsg=first&offset=2]: |
0ms |
get settings: |
3ms |
get forum list: |
7ms |
check forum access: |
0ms |
check topic access: |
0ms |
track hit: |
27ms |
get topic data: |
4ms |
get forum data: |
1ms |
get page messages: |
19ms |
update_topic_read_status (1559814): 20.02.2022 23:35:58: |
0ms |
get tp. blocked users: |
0ms |
get online users: |
43ms |
check new: |
1ms |
others: | 105ms |
total: | 210ms |
0 / 0 |