Skip to content

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

Description

@LimiNode
  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.

Activity

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

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