test_package.cpp 1006 B

12345678910111213141516171819202122232425262728293031323334
  1. #include <rotor/asio.hpp>
  2. #include <rotor/thread.hpp>
  3. namespace asio = boost::asio;
  4. namespace pt = boost::posix_time;
  5. struct server_actor : public rotor::actor_base_t {
  6. using rotor::actor_base_t::actor_base_t;
  7. void on_start() noexcept override {
  8. rotor::actor_base_t::on_start();
  9. std::cout << "hello world\n";
  10. do_shutdown();
  11. }
  12. };
  13. int main() {
  14. asio::io_context io_context;
  15. auto system_context = rotor::asio::system_context_asio_t::ptr_t{new rotor::asio::system_context_asio_t(io_context)};
  16. auto strand = std::make_shared<asio::io_context::strand>(io_context);
  17. auto timeout = boost::posix_time::milliseconds{500};
  18. auto sup =
  19. system_context->create_supervisor<rotor::asio::supervisor_asio_t>().strand(strand).timeout(timeout).finish();
  20. sup->create_actor<server_actor>().timeout(timeout).autoshutdown_supervisor().finish();
  21. sup->start();
  22. io_context.run();
  23. rotor::thread::system_context_thread_t thread_ctx;
  24. return 0;
  25. }