xref: /aosp_15_r20/external/ot-br-posix/src/agent/application.hpp (revision 4a64e381480ef79f0532b2421e44e6ee336b8e0d)
1*4a64e381SAndroid Build Coastguard Worker /*
2*4a64e381SAndroid Build Coastguard Worker  *    Copyright (c) 2021, The OpenThread Authors.
3*4a64e381SAndroid Build Coastguard Worker  *    All rights reserved.
4*4a64e381SAndroid Build Coastguard Worker  *
5*4a64e381SAndroid Build Coastguard Worker  *    Redistribution and use in source and binary forms, with or without
6*4a64e381SAndroid Build Coastguard Worker  *    modification, are permitted provided that the following conditions are met:
7*4a64e381SAndroid Build Coastguard Worker  *    1. Redistributions of source code must retain the above copyright
8*4a64e381SAndroid Build Coastguard Worker  *       notice, this list of conditions and the following disclaimer.
9*4a64e381SAndroid Build Coastguard Worker  *    2. Redistributions in binary form must reproduce the above copyright
10*4a64e381SAndroid Build Coastguard Worker  *       notice, this list of conditions and the following disclaimer in the
11*4a64e381SAndroid Build Coastguard Worker  *       documentation and/or other materials provided with the distribution.
12*4a64e381SAndroid Build Coastguard Worker  *    3. Neither the name of the copyright holder nor the
13*4a64e381SAndroid Build Coastguard Worker  *       names of its contributors may be used to endorse or promote products
14*4a64e381SAndroid Build Coastguard Worker  *       derived from this software without specific prior written permission.
15*4a64e381SAndroid Build Coastguard Worker  *
16*4a64e381SAndroid Build Coastguard Worker  *    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17*4a64e381SAndroid Build Coastguard Worker  *    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18*4a64e381SAndroid Build Coastguard Worker  *    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19*4a64e381SAndroid Build Coastguard Worker  *    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
20*4a64e381SAndroid Build Coastguard Worker  *    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21*4a64e381SAndroid Build Coastguard Worker  *    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22*4a64e381SAndroid Build Coastguard Worker  *    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23*4a64e381SAndroid Build Coastguard Worker  *    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24*4a64e381SAndroid Build Coastguard Worker  *    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25*4a64e381SAndroid Build Coastguard Worker  *    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26*4a64e381SAndroid Build Coastguard Worker  *    POSSIBILITY OF SUCH DAMAGE.
27*4a64e381SAndroid Build Coastguard Worker  */
28*4a64e381SAndroid Build Coastguard Worker 
29*4a64e381SAndroid Build Coastguard Worker /**
30*4a64e381SAndroid Build Coastguard Worker  * @file
31*4a64e381SAndroid Build Coastguard Worker  *   This file includes definition for OTBR Agent.
32*4a64e381SAndroid Build Coastguard Worker  */
33*4a64e381SAndroid Build Coastguard Worker 
34*4a64e381SAndroid Build Coastguard Worker #ifndef OTBR_AGENT_APPLICATION_HPP_
35*4a64e381SAndroid Build Coastguard Worker #define OTBR_AGENT_APPLICATION_HPP_
36*4a64e381SAndroid Build Coastguard Worker 
37*4a64e381SAndroid Build Coastguard Worker #include "openthread-br/config.h"
38*4a64e381SAndroid Build Coastguard Worker 
39*4a64e381SAndroid Build Coastguard Worker #include <atomic>
40*4a64e381SAndroid Build Coastguard Worker #include <signal.h>
41*4a64e381SAndroid Build Coastguard Worker #include <stdint.h>
42*4a64e381SAndroid Build Coastguard Worker #include <vector>
43*4a64e381SAndroid Build Coastguard Worker 
44*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_BORDER_AGENT
45*4a64e381SAndroid Build Coastguard Worker #include "border_agent/border_agent.hpp"
46*4a64e381SAndroid Build Coastguard Worker #endif
47*4a64e381SAndroid Build Coastguard Worker #include "ncp/rcp_host.hpp"
48*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_BACKBONE_ROUTER
49*4a64e381SAndroid Build Coastguard Worker #include "backbone_router/backbone_agent.hpp"
50*4a64e381SAndroid Build Coastguard Worker #endif
51*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_REST_SERVER
52*4a64e381SAndroid Build Coastguard Worker #include "rest/rest_web_server.hpp"
53*4a64e381SAndroid Build Coastguard Worker #endif
54*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_DBUS_SERVER
55*4a64e381SAndroid Build Coastguard Worker #include "dbus/server/dbus_agent.hpp"
56*4a64e381SAndroid Build Coastguard Worker #endif
57*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_OPENWRT
58*4a64e381SAndroid Build Coastguard Worker #include "openwrt/ubus/otubus.hpp"
59*4a64e381SAndroid Build Coastguard Worker #endif
60*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_VENDOR_SERVER
61*4a64e381SAndroid Build Coastguard Worker #include "agent/vendor.hpp"
62*4a64e381SAndroid Build Coastguard Worker #endif
63*4a64e381SAndroid Build Coastguard Worker #include "utils/infra_link_selector.hpp"
64*4a64e381SAndroid Build Coastguard Worker 
65*4a64e381SAndroid Build Coastguard Worker namespace otbr {
66*4a64e381SAndroid Build Coastguard Worker 
67*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_VENDOR_SERVER
68*4a64e381SAndroid Build Coastguard Worker namespace vendor {
69*4a64e381SAndroid Build Coastguard Worker 
70*4a64e381SAndroid Build Coastguard Worker class VendorServer;
71*4a64e381SAndroid Build Coastguard Worker 
72*4a64e381SAndroid Build Coastguard Worker }
73*4a64e381SAndroid Build Coastguard Worker #endif
74*4a64e381SAndroid Build Coastguard Worker 
75*4a64e381SAndroid Build Coastguard Worker /**
76*4a64e381SAndroid Build Coastguard Worker  * @addtogroup border-router-agent
77*4a64e381SAndroid Build Coastguard Worker  *
78*4a64e381SAndroid Build Coastguard Worker  * @brief
79*4a64e381SAndroid Build Coastguard Worker  *   This module includes definition for OTBR application.
80*4a64e381SAndroid Build Coastguard Worker  *
81*4a64e381SAndroid Build Coastguard Worker  * @{
82*4a64e381SAndroid Build Coastguard Worker  */
83*4a64e381SAndroid Build Coastguard Worker 
84*4a64e381SAndroid Build Coastguard Worker /**
85*4a64e381SAndroid Build Coastguard Worker  * This class implements OTBR application management.
86*4a64e381SAndroid Build Coastguard Worker  */
87*4a64e381SAndroid Build Coastguard Worker class Application : private NonCopyable
88*4a64e381SAndroid Build Coastguard Worker {
89*4a64e381SAndroid Build Coastguard Worker public:
90*4a64e381SAndroid Build Coastguard Worker     /**
91*4a64e381SAndroid Build Coastguard Worker      * This constructor initializes the Application instance.
92*4a64e381SAndroid Build Coastguard Worker      *
93*4a64e381SAndroid Build Coastguard Worker      * @param[in] aInterfaceName         Name of the Thread network interface.
94*4a64e381SAndroid Build Coastguard Worker      * @param[in] aBackboneInterfaceName Name of the backbone network interface.
95*4a64e381SAndroid Build Coastguard Worker      * @param[in] aRadioUrls             The radio URLs (can be IEEE802.15.4 or TREL radio).
96*4a64e381SAndroid Build Coastguard Worker      * @param[in] aEnableAutoAttach      Whether or not to automatically attach to the saved network.
97*4a64e381SAndroid Build Coastguard Worker      * @param[in] aRestListenAddress     Network address to listen on.
98*4a64e381SAndroid Build Coastguard Worker      * @param[in] aRestListenPort        Network port to listen on.
99*4a64e381SAndroid Build Coastguard Worker      */
100*4a64e381SAndroid Build Coastguard Worker     explicit Application(const std::string               &aInterfaceName,
101*4a64e381SAndroid Build Coastguard Worker                          const std::vector<const char *> &aBackboneInterfaceNames,
102*4a64e381SAndroid Build Coastguard Worker                          const std::vector<const char *> &aRadioUrls,
103*4a64e381SAndroid Build Coastguard Worker                          bool                             aEnableAutoAttach,
104*4a64e381SAndroid Build Coastguard Worker                          const std::string               &aRestListenAddress,
105*4a64e381SAndroid Build Coastguard Worker                          int                              aRestListenPort);
106*4a64e381SAndroid Build Coastguard Worker 
107*4a64e381SAndroid Build Coastguard Worker     /**
108*4a64e381SAndroid Build Coastguard Worker      * This method initializes the Application instance.
109*4a64e381SAndroid Build Coastguard Worker      */
110*4a64e381SAndroid Build Coastguard Worker     void Init(void);
111*4a64e381SAndroid Build Coastguard Worker 
112*4a64e381SAndroid Build Coastguard Worker     /**
113*4a64e381SAndroid Build Coastguard Worker      * This method de-initializes the Application instance.
114*4a64e381SAndroid Build Coastguard Worker      */
115*4a64e381SAndroid Build Coastguard Worker     void Deinit(void);
116*4a64e381SAndroid Build Coastguard Worker 
117*4a64e381SAndroid Build Coastguard Worker     /**
118*4a64e381SAndroid Build Coastguard Worker      * This method runs the application until exit.
119*4a64e381SAndroid Build Coastguard Worker      *
120*4a64e381SAndroid Build Coastguard Worker      * @retval OTBR_ERROR_NONE  The application exited without any error.
121*4a64e381SAndroid Build Coastguard Worker      * @retval OTBR_ERROR_ERRNO The application exited with some system error.
122*4a64e381SAndroid Build Coastguard Worker      */
123*4a64e381SAndroid Build Coastguard Worker     otbrError Run(void);
124*4a64e381SAndroid Build Coastguard Worker 
125*4a64e381SAndroid Build Coastguard Worker     /**
126*4a64e381SAndroid Build Coastguard Worker      * Get the OpenThread controller object the application is using.
127*4a64e381SAndroid Build Coastguard Worker      *
128*4a64e381SAndroid Build Coastguard Worker      * @returns The OpenThread controller object.
129*4a64e381SAndroid Build Coastguard Worker      */
GetHost(void)130*4a64e381SAndroid Build Coastguard Worker     Ncp::ThreadHost &GetHost(void) { return *mHost; }
131*4a64e381SAndroid Build Coastguard Worker 
132*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_MDNS
133*4a64e381SAndroid Build Coastguard Worker     /**
134*4a64e381SAndroid Build Coastguard Worker      * Get the Publisher object the application is using.
135*4a64e381SAndroid Build Coastguard Worker      *
136*4a64e381SAndroid Build Coastguard Worker      * @returns The Publisher object.
137*4a64e381SAndroid Build Coastguard Worker      */
GetPublisher(void)138*4a64e381SAndroid Build Coastguard Worker     Mdns::Publisher &GetPublisher(void)
139*4a64e381SAndroid Build Coastguard Worker     {
140*4a64e381SAndroid Build Coastguard Worker         return *mPublisher;
141*4a64e381SAndroid Build Coastguard Worker     }
142*4a64e381SAndroid Build Coastguard Worker #endif
143*4a64e381SAndroid Build Coastguard Worker 
144*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_BORDER_AGENT
145*4a64e381SAndroid Build Coastguard Worker     /**
146*4a64e381SAndroid Build Coastguard Worker      * Get the border agent the application is using.
147*4a64e381SAndroid Build Coastguard Worker      *
148*4a64e381SAndroid Build Coastguard Worker      * @returns The border agent.
149*4a64e381SAndroid Build Coastguard Worker      */
GetBorderAgent(void)150*4a64e381SAndroid Build Coastguard Worker     BorderAgent &GetBorderAgent(void)
151*4a64e381SAndroid Build Coastguard Worker     {
152*4a64e381SAndroid Build Coastguard Worker         return *mBorderAgent;
153*4a64e381SAndroid Build Coastguard Worker     }
154*4a64e381SAndroid Build Coastguard Worker #endif
155*4a64e381SAndroid Build Coastguard Worker 
156*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_BACKBONE_ROUTER
157*4a64e381SAndroid Build Coastguard Worker     /**
158*4a64e381SAndroid Build Coastguard Worker      * Get the backbone agent the application is using.
159*4a64e381SAndroid Build Coastguard Worker      *
160*4a64e381SAndroid Build Coastguard Worker      * @returns The backbone agent.
161*4a64e381SAndroid Build Coastguard Worker      */
GetBackboneAgent(void)162*4a64e381SAndroid Build Coastguard Worker     BackboneRouter::BackboneAgent &GetBackboneAgent(void)
163*4a64e381SAndroid Build Coastguard Worker     {
164*4a64e381SAndroid Build Coastguard Worker         return *mBackboneAgent;
165*4a64e381SAndroid Build Coastguard Worker     }
166*4a64e381SAndroid Build Coastguard Worker #endif
167*4a64e381SAndroid Build Coastguard Worker 
168*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_SRP_ADVERTISING_PROXY
169*4a64e381SAndroid Build Coastguard Worker     /**
170*4a64e381SAndroid Build Coastguard Worker      * Get the advertising proxy the application is using.
171*4a64e381SAndroid Build Coastguard Worker      *
172*4a64e381SAndroid Build Coastguard Worker      * @returns The advertising proxy.
173*4a64e381SAndroid Build Coastguard Worker      */
GetAdvertisingProxy(void)174*4a64e381SAndroid Build Coastguard Worker     AdvertisingProxy &GetAdvertisingProxy(void)
175*4a64e381SAndroid Build Coastguard Worker     {
176*4a64e381SAndroid Build Coastguard Worker         return *mAdvertisingProxy;
177*4a64e381SAndroid Build Coastguard Worker     }
178*4a64e381SAndroid Build Coastguard Worker #endif
179*4a64e381SAndroid Build Coastguard Worker 
180*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_DNSSD_DISCOVERY_PROXY
181*4a64e381SAndroid Build Coastguard Worker     /**
182*4a64e381SAndroid Build Coastguard Worker      * Get the discovery proxy the application is using.
183*4a64e381SAndroid Build Coastguard Worker      *
184*4a64e381SAndroid Build Coastguard Worker      * @returns The discovery proxy.
185*4a64e381SAndroid Build Coastguard Worker      */
GetDiscoveryProxy(void)186*4a64e381SAndroid Build Coastguard Worker     Dnssd::DiscoveryProxy &GetDiscoveryProxy(void)
187*4a64e381SAndroid Build Coastguard Worker     {
188*4a64e381SAndroid Build Coastguard Worker         return *mDiscoveryProxy;
189*4a64e381SAndroid Build Coastguard Worker     }
190*4a64e381SAndroid Build Coastguard Worker #endif
191*4a64e381SAndroid Build Coastguard Worker 
192*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_TREL
193*4a64e381SAndroid Build Coastguard Worker     /**
194*4a64e381SAndroid Build Coastguard Worker      * Get the TrelDnssd object the application is using.
195*4a64e381SAndroid Build Coastguard Worker      *
196*4a64e381SAndroid Build Coastguard Worker      * @returns The TrelDnssd.
197*4a64e381SAndroid Build Coastguard Worker      */
GetTrelDnssd(void)198*4a64e381SAndroid Build Coastguard Worker     TrelDnssd::TrelDnssd &GetTrelDnssd(void)
199*4a64e381SAndroid Build Coastguard Worker     {
200*4a64e381SAndroid Build Coastguard Worker         return *mTrelDnssd;
201*4a64e381SAndroid Build Coastguard Worker     }
202*4a64e381SAndroid Build Coastguard Worker #endif
203*4a64e381SAndroid Build Coastguard Worker 
204*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_OPENWRT
205*4a64e381SAndroid Build Coastguard Worker     /**
206*4a64e381SAndroid Build Coastguard Worker      * Get the UBus agent the application is using.
207*4a64e381SAndroid Build Coastguard Worker      *
208*4a64e381SAndroid Build Coastguard Worker      * @returns The UBus agent.
209*4a64e381SAndroid Build Coastguard Worker      */
GetUBusAgent(void)210*4a64e381SAndroid Build Coastguard Worker     ubus::UBusAgent &GetUBusAgent(void)
211*4a64e381SAndroid Build Coastguard Worker     {
212*4a64e381SAndroid Build Coastguard Worker         return *mUbusAgent;
213*4a64e381SAndroid Build Coastguard Worker     }
214*4a64e381SAndroid Build Coastguard Worker #endif
215*4a64e381SAndroid Build Coastguard Worker 
216*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_REST_SERVER
217*4a64e381SAndroid Build Coastguard Worker     /**
218*4a64e381SAndroid Build Coastguard Worker      * Get the rest web server the application is using.
219*4a64e381SAndroid Build Coastguard Worker      *
220*4a64e381SAndroid Build Coastguard Worker      * @returns The rest web server.
221*4a64e381SAndroid Build Coastguard Worker      */
GetRestWebServer(void)222*4a64e381SAndroid Build Coastguard Worker     rest::RestWebServer &GetRestWebServer(void)
223*4a64e381SAndroid Build Coastguard Worker     {
224*4a64e381SAndroid Build Coastguard Worker         return *mRestWebServer;
225*4a64e381SAndroid Build Coastguard Worker     }
226*4a64e381SAndroid Build Coastguard Worker #endif
227*4a64e381SAndroid Build Coastguard Worker 
228*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_DBUS_SERVER
229*4a64e381SAndroid Build Coastguard Worker     /**
230*4a64e381SAndroid Build Coastguard Worker      * Get the DBus agent the application is using.
231*4a64e381SAndroid Build Coastguard Worker      *
232*4a64e381SAndroid Build Coastguard Worker      * @returns The DBus agent.
233*4a64e381SAndroid Build Coastguard Worker      */
GetDBusAgent(void)234*4a64e381SAndroid Build Coastguard Worker     DBus::DBusAgent &GetDBusAgent(void)
235*4a64e381SAndroid Build Coastguard Worker     {
236*4a64e381SAndroid Build Coastguard Worker         return *mDBusAgent;
237*4a64e381SAndroid Build Coastguard Worker     }
238*4a64e381SAndroid Build Coastguard Worker #endif
239*4a64e381SAndroid Build Coastguard Worker 
240*4a64e381SAndroid Build Coastguard Worker     /**
241*4a64e381SAndroid Build Coastguard Worker      * This method handles mDNS publisher's state changes.
242*4a64e381SAndroid Build Coastguard Worker      *
243*4a64e381SAndroid Build Coastguard Worker      * @param[in] aState  The state of mDNS publisher.
244*4a64e381SAndroid Build Coastguard Worker      */
245*4a64e381SAndroid Build Coastguard Worker     void HandleMdnsState(Mdns::Publisher::State aState);
246*4a64e381SAndroid Build Coastguard Worker 
247*4a64e381SAndroid Build Coastguard Worker private:
248*4a64e381SAndroid Build Coastguard Worker     // Default poll timeout.
249*4a64e381SAndroid Build Coastguard Worker     static const struct timeval kPollTimeout;
250*4a64e381SAndroid Build Coastguard Worker 
251*4a64e381SAndroid Build Coastguard Worker     static void HandleSignal(int aSignal);
252*4a64e381SAndroid Build Coastguard Worker 
253*4a64e381SAndroid Build Coastguard Worker     void CreateRcpMode(const std::string &aRestListenAddress, int aRestListenPort);
254*4a64e381SAndroid Build Coastguard Worker     void InitRcpMode(void);
255*4a64e381SAndroid Build Coastguard Worker     void DeinitRcpMode(void);
256*4a64e381SAndroid Build Coastguard Worker 
257*4a64e381SAndroid Build Coastguard Worker     void InitNcpMode(void);
258*4a64e381SAndroid Build Coastguard Worker     void DeinitNcpMode(void);
259*4a64e381SAndroid Build Coastguard Worker 
260*4a64e381SAndroid Build Coastguard Worker     std::string mInterfaceName;
261*4a64e381SAndroid Build Coastguard Worker #if __linux__
262*4a64e381SAndroid Build Coastguard Worker     otbr::Utils::InfraLinkSelector mInfraLinkSelector;
263*4a64e381SAndroid Build Coastguard Worker #endif
264*4a64e381SAndroid Build Coastguard Worker     const char                      *mBackboneInterfaceName;
265*4a64e381SAndroid Build Coastguard Worker     std::unique_ptr<Ncp::ThreadHost> mHost;
266*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_MDNS
267*4a64e381SAndroid Build Coastguard Worker     std::unique_ptr<Mdns::Publisher> mPublisher;
268*4a64e381SAndroid Build Coastguard Worker #endif
269*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_BORDER_AGENT
270*4a64e381SAndroid Build Coastguard Worker     std::unique_ptr<BorderAgent> mBorderAgent;
271*4a64e381SAndroid Build Coastguard Worker #endif
272*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_BACKBONE_ROUTER
273*4a64e381SAndroid Build Coastguard Worker     std::unique_ptr<BackboneRouter::BackboneAgent> mBackboneAgent;
274*4a64e381SAndroid Build Coastguard Worker #endif
275*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_SRP_ADVERTISING_PROXY
276*4a64e381SAndroid Build Coastguard Worker     std::unique_ptr<AdvertisingProxy> mAdvertisingProxy;
277*4a64e381SAndroid Build Coastguard Worker #endif
278*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_DNSSD_DISCOVERY_PROXY
279*4a64e381SAndroid Build Coastguard Worker     std::unique_ptr<Dnssd::DiscoveryProxy> mDiscoveryProxy;
280*4a64e381SAndroid Build Coastguard Worker #endif
281*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_TREL
282*4a64e381SAndroid Build Coastguard Worker     std::unique_ptr<TrelDnssd::TrelDnssd> mTrelDnssd;
283*4a64e381SAndroid Build Coastguard Worker #endif
284*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_OPENWRT
285*4a64e381SAndroid Build Coastguard Worker     std::unique_ptr<ubus::UBusAgent> mUbusAgent;
286*4a64e381SAndroid Build Coastguard Worker #endif
287*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_REST_SERVER
288*4a64e381SAndroid Build Coastguard Worker     std::unique_ptr<rest::RestWebServer> mRestWebServer;
289*4a64e381SAndroid Build Coastguard Worker #endif
290*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_DBUS_SERVER
291*4a64e381SAndroid Build Coastguard Worker     std::unique_ptr<DBus::DBusAgent> mDBusAgent;
292*4a64e381SAndroid Build Coastguard Worker #endif
293*4a64e381SAndroid Build Coastguard Worker #if OTBR_ENABLE_VENDOR_SERVER
294*4a64e381SAndroid Build Coastguard Worker     std::shared_ptr<vendor::VendorServer> mVendorServer;
295*4a64e381SAndroid Build Coastguard Worker #endif
296*4a64e381SAndroid Build Coastguard Worker 
297*4a64e381SAndroid Build Coastguard Worker     static std::atomic_bool sShouldTerminate;
298*4a64e381SAndroid Build Coastguard Worker };
299*4a64e381SAndroid Build Coastguard Worker 
300*4a64e381SAndroid Build Coastguard Worker /**
301*4a64e381SAndroid Build Coastguard Worker  * @}
302*4a64e381SAndroid Build Coastguard Worker  */
303*4a64e381SAndroid Build Coastguard Worker 
304*4a64e381SAndroid Build Coastguard Worker } // namespace otbr
305*4a64e381SAndroid Build Coastguard Worker 
306*4a64e381SAndroid Build Coastguard Worker #endif // OTBR_AGENT_APPLICATION_HPP_
307