hello_asio.cpp 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. //
  2. // Copyright (c) 2019-2022 Ivan Baidakou (basiliscos) (the dot dmol at gmail dot com)
  3. //
  4. // Distributed under the MIT Software License
  5. //
  6. #include "rotor/asio.hpp"
  7. namespace asio = boost::asio;
  8. namespace pt = boost::posix_time;
  9. struct server_actor : public rotor::actor_base_t {
  10. using rotor::actor_base_t::actor_base_t;
  11. void on_start() noexcept override {
  12. rotor::actor_base_t::on_start();
  13. std::cout << "hello world\n";
  14. do_shutdown();
  15. }
  16. };
  17. int main() {
  18. asio::io_context io_context;
  19. auto system_context = rotor::asio::system_context_asio_t::ptr_t{new rotor::asio::system_context_asio_t(io_context)};
  20. auto strand = std::make_shared<asio::io_context::strand>(io_context);
  21. auto timeout = boost::posix_time::milliseconds{500};
  22. auto sup =
  23. system_context->create_supervisor<rotor::asio::supervisor_asio_t>().strand(strand).timeout(timeout).finish();
  24. sup->create_actor<server_actor>().timeout(timeout).autoshutdown_supervisor().finish();
  25. sup->start();
  26. io_context.run();
  27. return 0;
  28. }