2525#include " aether/obj/obj.h"
2626#include " aether/actions/action_ptr.h"
2727#include " aether/types/client_config.h"
28- # include " aether/ae_actions/time_sync.h "
28+
2929#include " aether/actions/action_context.h"
30- #include " aether/actions/action_processor.h"
3130#include " aether/ae_actions/select_client.h"
32- #include " aether/tele/traps/tele_statistics.h"
33- #include " aether/registration/registration.h" // IWYU pragma: keep
3431
35- #include " aether/client.h"
36- #include " aether/crypto.h"
37- #include " aether/server.h"
3832#include " aether/uap/uap.h"
39- #include " aether/poller/poller.h"
40- #include " aether/dns/dns_resolve.h"
41- #include " aether/adapter_registry.h"
42- #include " aether/registration_cloud.h"
4333
4434namespace ae {
35+ class Server ;
36+ class Client ;
37+ class Crypto ;
38+ class IPoller ;
39+ class DnsResolver ;
40+ class Registration ;
41+ class TimeSyncAction ;
42+ class AdapterRegistry ;
43+ class ActionProcessor ;
44+ class RegistrationCloud ;
45+ class RegistrationCloud ;
46+
47+ namespace tele {
48+ class TeleStatistics ;
49+ }
50+
4551class Aether : public Obj {
4652 AE_OBJECT (Aether, Obj, 0 )
4753
48- Aether () = default ;
54+ Aether ();
4955
5056 public:
5157 // Internal.
@@ -75,40 +81,39 @@ class Aether : public Obj {
7581 void Update (TimePoint current_time) override ;
7682
7783 // User-facing API.
78- operator ActionContext () const { return ActionContext{*action_processor}; }
84+ operator ActionContext () const ;
7985
80- Client::ptr CreateClient (ClientConfig const & config,
81- std::string const & client_id);
86+ ObjPtr< Client> CreateClient (ClientConfig const & config,
87+ std::string const & client_id);
8288 ActionPtr<SelectClientAction> SelectClient (Uid parent_uid,
8389 std::string const & client_id);
8490
8591 void StoreServer (Server::ptr s);
8692 Server::ptr GetServer (ServerId server_id);
8793
88- Client ::ptr client_prefab;
89- RegistrationCloud ::ptr registration_cloud;
94+ Obj ::ptr client_prefab;
95+ Obj ::ptr registration_cloud;
9096
91- Crypto ::ptr crypto;
92- IPoller ::ptr poller;
93- DnsResolver ::ptr dns_resolver;
97+ Obj ::ptr crypto;
98+ Obj ::ptr poller;
99+ Obj ::ptr dns_resolver;
94100
95- AdapterRegistry ::ptr adapter_registry;
101+ Obj ::ptr adapter_registry;
96102 Uap::ptr uap;
97103
98- tele::TeleStatistics ::ptr tele_statistics;
104+ Obj ::ptr tele_statistics;
99105
100- std::unique_ptr<ActionProcessor> action_processor =
101- make_unique<ActionProcessor>();
106+ std::unique_ptr<ActionProcessor> action_processor;
102107
103108 private:
104- Client::ptr FindClient (std::string const & client_id);
105- void StoreClient (Client::ptr client);
109+ ObjPtr< Client> FindClient (std::string const & client_id);
110+ void StoreClient (ObjPtr< Client> client);
106111
107112 ActionPtr<SelectClientAction> FindSelectClientAction (
108113 std::string const & client_id);
109114 ActionPtr<SelectClientAction> MakeSelectClient () const ;
110115 ActionPtr<SelectClientAction> MakeSelectClient (
111- Client::ptr const & client) const ;
116+ ObjPtr< Client> const & client) const ;
112117#if AE_SUPPORT_REGISTRATION
113118 ActionPtr<SelectClientAction> MakeSelectClient (
114119 ActionPtr<Registration> registration, std::string const & client_id);
@@ -119,10 +124,10 @@ class Aether : public Obj {
119124 private:
120125#endif
121126
122- void MakeTimeSyncAction (Client::ptr const & client);
127+ void MakeTimeSyncAction (ObjPtr< Client> const & client);
123128
124- std::map<std::string, Client ::ptr> clients_;
125- std::map<ServerId, Server ::ptr> servers_;
129+ std::map<std::string, Obj ::ptr> clients_;
130+ std::map<ServerId, Obj ::ptr> servers_;
126131
127132 std::map<std::string, ActionPtr<SelectClientAction>> select_client_actions_;
128133#if AE_TIME_SYNC_ENABLED
0 commit comments