hello_asio.cpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. //
  2. // Copyright (c) 2019 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(rotor::message_t<rotor::payload::start_actor_t> &) noexcept override {
  12. std::cout << "hello world\n";
  13. supervisor.do_shutdown(); // optional
  14. }
  15. };
  16. int main() {
  17. asio::io_context io_context;
  18. auto system_context = rotor::asio::system_context_asio_t::ptr_t{new rotor::asio::system_context_asio_t(io_context)};
  19. auto stand = std::make_shared<asio::io_context::strand>(io_context);
  20. auto timeout = boost::posix_time::milliseconds{500};
  21. rotor::asio::supervisor_config_asio_t conf{timeout, std::move(stand)};
  22. auto sup = system_context->create_supervisor<rotor::asio::supervisor_asio_t>(conf);
  23. auto hello = sup->create_actor<server_actor>(timeout);
  24. sup->start();
  25. io_context.run();
  26. return 0;
  27. }