В 19.2.1-19.2.3 определены процедуры восстановления при ошибках.
Эти процедуры представлены на рисунках 4-6.
Рисунок 4 - Процедура для ошибок 1-го класса
Рисунок 5 - Процедура для ошибок 2-го класса
Примечание - На рисунке 5 предполагается, что используется группирование примитивов F-CLOSE и F-DESELECT. Это всегда будет в случае услуги класса "Передача файла".
Рисунок 6 - Процедура для ошибок 3-го класса
19.2.1 Ошибки 1-го класса
19.2.1.1 Если логический объект восстановления при ошибках обнаруживает ошибку 1-го класса (см. 18.1), он должен послать поставщику внутренней файловой услуги сервисный примитив запроса F-RESTART.
19.2.1.2 Если логический объект восстановления при ошибках обнаруживает ошибку 1-го класса (см. 18.1) и функциональные блоки "Ресинхронизация" уровня представления и "Рестарт" были предварительно успешно согласованы, то он должен послать поставщику внутренней файловой услуги сервисный примитив запроса F-RESTART. Если функциональный блок "Рестарт" не доступен, а функциональный блок "Восстановление при ошибках" доступен, то указанный логический объект должен выполнить процедуры восстановления при ошибках, описанные в 19.2.2.1. Если логический объект является принимающим логическим объектом, то сервисный примитив запроса F-RESTART должен включать в себя точку восстановления, которая является идентификатором контрольной точки, так что:
а) идентификатор указывает рестарт активности с самого начала, если промежуточный рестарт невозможен;
б) в противном случае идентификатор является самой последней контрольной точкой из списка в доките.
Примечание - Номера точек синхронизации сеансового уровня связаны с идентификаторами контрольной точки через смещение синхронизации (см. раздел 3).
19.2.1.3 Если логический объект является посылающим логическим объектом, он не должен включать параметр "Точка восстановления" в примитив запроса F-RESTART.
19.2.1.4 Если посылающий логический объект восстановления при ошибках получает примитив индикации F-RESTART, он должен послать примитив ответа F-RESTART и повторить передачу данных с контрольной точки, указанной в примитиве индикации F-RESTART.
Примечание - В этом случае не следует ожидать примитива ответа, если был послан примитив запроса F-RESTART.
19.2.1.5 Если посылающий логический объект восстановления при ошибках получает примитив подтверждения F-RESTART, он должен повторить передачу данных с точки восстановления, указанной в примитиве подтверждения F-RESTART.
19.2.1.6 Если принимающий логический объект восстановления при ошибках получает примитив индикации F-RESTART и если он ранее посылал примитив запроса F-RESTART, который остается неподтвержденным, он должен послать примитив ответа F-RESTART, указывая точку восстановления, как это отмечено в 19.2.1.2.
19.2.1.7 Если принимающий логический объект восстановления при ошибках получает примитив индикации F-RESTART после посылки примитива запроса F-RESTART и до получения примитива подтверждения F-RESTART, он должен "сбросить" этот примитив.
19.2.1.8 Если функциональный блок "Рестарт" не доступен, тогда ошибки 1-го класса должны быть обработаны как ошибки 2 класса.
19.2.2 Ошибки 2-го класса