MapLibre Native Core
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
actor.hpp
Go to the documentation of this file.
1 #pragma once
2 
5 #include <mbgl/actor/mailbox.hpp>
6 #include <mbgl/actor/message.hpp>
9 
10 #include <memory>
11 #include <future>
12 #include <type_traits>
13 #include <cassert>
14 
15 namespace mbgl {
16 
51 template <class Object>
52 class Actor {
53 public:
54  template <class... Args>
55  Actor(Scheduler& scheduler, Args&&... args)
56  : target(scheduler, parent, std::forward<Args>(args)...) {}
57 
58  template <class... Args>
59  Actor(std::shared_ptr<Scheduler> scheduler, Args&&... args)
60  : retainer(std::move(scheduler)), target(*retainer, parent, std::forward<Args>(args)...) {}
61 
62  Actor(const Actor&) = delete;
63 
65  return parent.self();
66  }
67 
68 private:
69  std::shared_ptr<Scheduler> retainer;
70  AspiringActor<Object> parent;
72 };
73 
74 } // namespace mbgl
Actor(Scheduler &scheduler, Args &&... args)
Definition: actor.hpp:55
Actor(std::shared_ptr< Scheduler > scheduler, Args &&... args)
Definition: actor.hpp:59
Actor(const Actor &)=delete
Definition: actor.hpp:15
Definition: tile_id.hpp:256