Skip to content

МенеджерПодписок: детерминированный порядок вызова плагинов по убыванию Приоритет()#364

Open
igostv wants to merge 2 commits into
oscript-library:developfrom
igostv:feature/plugin-priority-sorting
Open

МенеджерПодписок: детерминированный порядок вызова плагинов по убыванию Приоритет()#364
igostv wants to merge 2 commits into
oscript-library:developfrom
igostv:feature/plugin-priority-sorting

Conversation

@igostv

@igostv igostv commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

реализация #363

сделанные изменения:

  • МенеджерПодписок: добавлена функция ПодписчикиПоПриоритету(), которая сортирует
    подписчиков по убыванию Приоритет() перед вызовом ВыполнитьПодпискуНаСобытие.
    Это делает порядок диспетчеризации событий детерминированным и соответствует
    семантике поля ПриоритетПлагина в ПлагинСинхронизации.

  • Добавлены тесты (tests/МенеджерПодписок_сортировка_test.os):
    · порядок убывания для двух подписчиков
    · все подписчики вызываются (не только первый)
    · корректный порядок для трёх подписчиков с перепутанными приоритетами
    · один подписчик обрабатывается без ошибок
    · пустой индекс — ноль вызовов, ноль исключений

  • Добавлена фикстура tests/fixtures/СтабПодписчик.os — минимальный стаб
    подписчика для тестирования; пишет метку в разделяемый журнал при каждом вызове.

@oscript-library/Collaborators - пожалуйста, проверьте изменения и прокомментируйте их

igostv and others added 2 commits June 15, 2026 14:39
Приоритет() was declared in the plugin interface but never used for
ordering event handler dispatch. МенеджерПодписок now sorts subscribers
by Приоритет() descending before calling each handler, making execution
order deterministic and controllable by plugin authors.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- tests/fixtures/СтабПодписчик.os: минимальный стаб с Приоритет() и ВыполнитьПодписку(),
  получает журнал вызовов по ссылке из теста
- tests/МенеджерПодписок_сортировка_test.os: 5 тестов на детерминированный порядок вызова:
  2 подписчика, 3 подписчика с перепутанными приоритетами, 1 подписчик, пустой индекс

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@igostv igostv force-pushed the feature/plugin-priority-sorting branch from 05804eb to 0ef2d2e Compare June 15, 2026 11:40
@sonar-openbsl-ru-qa-bot

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant