Коды завершения при работе с системой резервирования
В таблице 7 приведены коды завершения СУБД ЛИНТЕР, возвращаемые клиентскому приложению при работе с системой резервирования (свидетельствуют о переключении серверов системы резервирования).
Реакция клиентского приложения на все перечисленные в таблице 7 коды завершения (кроме кода ERRNMRKAN) стандартная:
-
закрыть канал;
-
затем снова открыть канал;
-
повторить последние транзакции.
Кроме кодов завершения, перечисленных в таблице 7, возможно также получение других кодов завершения, не относящихся непосредственно к системе резервирования. Такие коды завершения клиентские приложения должны обрабатывать так же, как и при работе без системы резервирования. При написании программ удобно обрабатывать все коды завершения, связанные с сетевым взаимодействием, в одном блоке. Для этого достаточно проверить, что значение кода завершения находится в диапазоне от 4000 до 5000.
Если в программе используется несколько каналов, то при получении по одному из них кода завершения, обработка которого предполагает закрытие этого канала, а затем его повторное открытие, необходимо также закрыть, а затем повторно открыть и остальные используемые каналы.
В случае использования интерфейса нижнего уровня (call-интерфейс) для закрытия канала достаточно обнулить поле NumChan во всех контрольных блоках программы. Такой прием используется, поскольку в большинстве случаев дальнейшая работа с сервером СУБД ЛИНТЕР невозможна, и посылка команды закрытия канала бессмысленна. Кроме того, это исключает совпадение номера вновь открытого канала и канала, работавшего с узлом, связь с которым была потеряна, т.е. исключается возможность функционирования двух контрольных блоков с одним и тем же номером канала.
Обозначение | Числовое значение | Причина |
---|---|---|
ERR_CONNECT | 4006 | Ошибка при установке соединения с БД. |
ERR_SEND | 4007 | Ошибка передачи. |
ERR_RECV | 4008 | Ошибка приема. |
ERRNMRKAN | 1069 | Канал не открыт данным процессом. |
ERROPENQUE | 1001 | СУБД ЛИНТЕР на удаленном узле активна. |
KernelShutdown | 1046 | Ядро СУБД ЛИНТЕР находится в процессе останова. |
FORCED_ROLLB | 6712 | Транзакция отменена. |
ERR_LINKDOWN | 4061 | Соединение закрыто сетевым драйвером сервера. |
ERR_CONNCLOSED | 4009 | Соединение закрыто. |
ChannelBusy | 1044 | Канал занят. |