diff options
| author | levlam <levlam@telegram.org> | 2022-10-01 23:48:03 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2022-10-01 23:48:03 +0300 |
| commit | 49e840aae541026b9bec2639e494da462133894b (patch) | |
| tree | 2f7019448302fd06e9f9eea67d1a834d19f37cd4 /tdactor/td | |
| parent | d4d365d31fb4acfeae27d089b403b5e60b1c3680 (diff) | |
Minor improvements.
Diffstat (limited to 'tdactor/td')
| -rw-r--r-- | tdactor/td/actor/impl/ActorId-decl.h | 4 | ||||
| -rw-r--r-- | tdactor/td/actor/impl/ActorId.h | 5 |
2 files changed, 7 insertions, 2 deletions
diff --git a/tdactor/td/actor/impl/ActorId-decl.h b/tdactor/td/actor/impl/ActorId-decl.h index 220abcdb3..2b60c7247 100644 --- a/tdactor/td/actor/impl/ActorId-decl.h +++ b/tdactor/td/actor/impl/ActorId-decl.h @@ -50,6 +50,7 @@ class ActorId { } ActorInfo *get_actor_info() const; + ActorType *get_actor_unsafe() const; Slice get_name() const; @@ -63,8 +64,7 @@ class ActorId { ObjectPool<ActorInfo>::WeakPtr ptr_; }; -// threat ActorId as pointer and ActorOwn as -// unique_ptr<ActorId> +// treat ActorId as pointer and ActorOwn as unique_ptr<ActorId> template <class ActorType = Actor> class ActorOwn { public: diff --git a/tdactor/td/actor/impl/ActorId.h b/tdactor/td/actor/impl/ActorId.h index 389833e19..76ef6d9a8 100644 --- a/tdactor/td/actor/impl/ActorId.h +++ b/tdactor/td/actor/impl/ActorId.h @@ -170,19 +170,24 @@ void ActorShared<ActorType>::reset(ActorId<ActorType> other) { template <class T> ActorRef::ActorRef(const ActorId<T> &actor_id) : actor_id_(actor_id) { } + template <class T> ActorRef::ActorRef(ActorId<T> &&actor_id) : actor_id_(actor_id) { actor_id.clear(); } + template <class T> ActorRef::ActorRef(const ActorShared<T> &actor_id) : actor_id_(actor_id.get()), token_(actor_id.token()) { } + template <class T> ActorRef::ActorRef(ActorShared<T> &&actor_id) : actor_id_(actor_id.release()), token_(actor_id.token()) { } + template <class T> ActorRef::ActorRef(const ActorOwn<T> &actor_id) : actor_id_(actor_id.get()) { } + template <class T> ActorRef::ActorRef(ActorOwn<T> &&actor_id) : actor_id_(actor_id.release()) { } |
