Коды завершения при работе с системой резервирования

В таблице 7 приведены коды завершения СУБД ЛИНТЕР, возвращаемые клиентскому приложению при работе с системой резервирования (свидетельствуют о переключении серверов системы резервирования).

Реакция клиентского приложения на все перечисленные в таблице 7 коды завершения (кроме кода ERRNMRKAN) стандартная:

  • закрыть канал;

  • затем снова открыть канал;

  • повторить последние транзакции.

Кроме кодов завершения, перечисленных в таблице 7, возможно также получение других кодов завершения, не относящихся непосредственно к системе резервирования. Такие коды завершения клиентские приложения должны обрабатывать так же, как и при работе без системы резервирования. При написании программ удобно обрабатывать все коды завершения, связанные с сетевым взаимодействием, в одном блоке. Для этого достаточно проверить, что значение кода завершения находится в диапазоне от 4000 до 5000.

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

В случае использования интерфейса нижнего уровня (call-интерфейс) для закрытия канала достаточно обнулить поле NumChan во всех контрольных блоках программы. Такой прием используется, поскольку в большинстве случаев дальнейшая работа с сервером СУБД ЛИНТЕР невозможна, и посылка команды закрытия канала бессмысленна. Кроме того, это исключает совпадение номера вновь открытого канала и канала, работавшего с узлом, связь с которым была потеряна, т.е. исключается возможность функционирования двух контрольных блоков с одним и тем же номером канала.

Таблица 7. Коды завершения системы резервирования
ОбозначениеЧисловое значениеПричина
ERR_CONNECT4006Ошибка при установке соединения с БД.
ERR_SEND4007Ошибка передачи.
ERR_RECV4008Ошибка приема.
ERRNMRKAN1069Канал не открыт данным процессом.
ERROPENQUE1001СУБД ЛИНТЕР на удаленном узле активна.
KernelShutdown1046Ядро СУБД ЛИНТЕР находится в процессе останова.
FORCED_ROLLB6712Транзакция отменена.
ERR_LINKDOWN4061Соединение закрыто сетевым драйвером сервера.
ERR_CONNCLOSED4009Соединение закрыто.
ChannelBusy1044Канал занят.