Глава 10: Управление версиями

10.1 Формат номера версии

DTP использует семантическое версионирование с номером мажорной версии и номером минорной версии:

{ major: number, minor: number }

Заголовок каждого LogicalFrame включает поле номера версии протокола, идентифицирующее версию протокола, используемую данным фреймом.

10.2 Правила совместимости версий

DTP_Engine поддерживает одновременную обработку форматов LogicalFrame как текущей версии, так и предыдущей мажорной версии.

Версия полученного фреймаОбработка
Текущая версияНормальная обработка
Предыдущая мажорная версияСовместимая обработка (обратная совместимость)
Более высокая версияОтправка уведомления о несовместимости версий
Более низкая версия (за пределами диапазона совместимости)Отправка уведомления о несовместимости версий

10.3 Обработка несовместимости версий

Когда получатель получает LogicalFrame, номер версии протокола в заголовке которого выше поддерживаемой версии:

  1. Не обрабатывать фрейм
  2. Отправить отправителю уведомление о несовместимости версий (VERSION_INCOMPATIBLE, 7001)
  3. Включить в уведомление наивысшую поддерживаемую версию получателя

При получении уведомления о несовместимости версий отправитель может:

  • Понизить версию до поддерживаемой получателем и повторно отправить
  • Или уведомить приложение верхнего уровня о несоответствии версий

10.4 Стратегия эволюции протокола

Управление версиями DTP обеспечивает обратную совместимость по мере развития протокола:

  • Обновление минорной версии: добавляет новые поля или функции без нарушения разбора существующих форматов фреймов
  • Обновление мажорной версии: может изменять формат фрейма, но сохраняет совместимость с предыдущей мажорной версией

Это означает, что терминальные устройства и Fay не обязаны обновляться одновременно — пока разница версий находится в пределах одной мажорной версии, обе стороны могут нормально взаимодействовать.