Skip to content

Улучшения Consolix #120

Description

@NewYaroslav
  1. Add migration guide: local signal loop -> Consolix runner
    Описать, как заменить локальный std::signal/run_backend_process_loop() на:

    consolix::add<consolix::PosixSignalWakeComponent>();
    return consolix::run_for_exit_code();
  2. Add backend service example with graceful shutdown
    Пример реального daemon/backend loop: worker thread, component shutdown, consolix::stop(code), LoopThrottleComponent, PosixSignalWakeComponent.

  3. Document component thread-safety contract
    Что можно делать из process(), shutdown(), worker threads; что нельзя делать из signal handler; как пользоваться wake()/LoopWakeService.

  4. Consider RunnerOptions / signal strategy API
    На будущее: не только компоненты, но и явная настройка runner-а:

    ConsoleApplicationRunnerOptions options;
    options.posix_signal_wakeup = true;

    Не срочно, но как архитектурный roadmap.

  5. Add Windows console-control integration test/manual test doc
    CI это тяжело тестирует, но стоит описать ручной тест для CTRL_C_EVENT, CTRL_CLOSE_EVENT, shutdown timeout.

  6. Add task/event queue component
    Следующий логичный слой после LoopWakeService: post(fn), wake(), process queued tasks. Тогда throttled loop станет не просто sleep, а маленьким event loop.

Для проектов, которые используют Consolix

  1. Replace local signal handling with Consolix runner
    Убрать локальный std::signal/Windows handler, использовать consolix::run_for_exit_code().

  2. Replace custom backend loop with Consolix components
    Перенести run_backend_process_loop() в BaseLoopComponent/LoopComponent.

  3. Move shutdown logic into component lifecycle
    Все остановки модулей, WebSocket/server/thread cleanup перенести в on_shutdown(int code).

  4. Return real exit code from main
    Вместо std::exit и глобальных флагов:

    return consolix::run_for_exit_code();
  5. Add long-loop wake support
    Если есть polling/sleep:

    consolix::add<consolix::PosixSignalWakeComponent>();
    consolix::add<consolix::LoopThrottleComponent>(std::chrono::milliseconds(1));
  6. Add shutdown tests
    Минимум: normal stop -> 0, component stop -> custom code, signal stop -> SIGTERM/SIGINT, exception -> non-zero.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions