1 /* 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef FOUNDATION_RESOURCESCHEDULE_BACKGROUND_TASK_MGR_INTERFACES_INNERKITS_INCLUDE_BACKGROUND_TASK_SUBSCRIBER_H 17 #define FOUNDATION_RESOURCESCHEDULE_BACKGROUND_TASK_MGR_INTERFACES_INNERKITS_INCLUDE_BACKGROUND_TASK_SUBSCRIBER_H 18 19 #include <iremote_broker.h> 20 21 #include "ibackground_task_mgr.h" 22 #include "background_task_subscriber_stub.h" 23 24 namespace OHOS { 25 namespace BackgroundTaskMgr { 26 class BackgroundTaskSubscriber { 27 public: 28 /** 29 * Default constructor used to create a instance. 30 */ 31 BackgroundTaskSubscriber(); 32 33 /** 34 * Default destructor. 35 */ 36 virtual ~BackgroundTaskSubscriber(); 37 38 /** 39 * Called back when the subscriber is connected to Background Task Manager Service. 40 * @deprecated 41 */ 42 virtual void OnConnected(); 43 44 /** 45 * Called back when the subscriber is disconnected from Background Task Manager Service. 46 * @deprecated 47 */ 48 virtual void OnDisconnected(); 49 50 /** 51 * Called back when a transient task start. 52 * 53 * @param info Transient task app info. 54 **/ 55 virtual void OnTransientTaskStart(const std::shared_ptr<TransientTaskAppInfo>& info); 56 57 /** 58 * Called back when a transient task end. 59 * 60 * @param info Transient task app info. 61 **/ 62 virtual void OnTransientTaskEnd(const std::shared_ptr<TransientTaskAppInfo>& info); 63 64 /** 65 * Called back when a transient task err. 66 * 67 * @param info Transient task app info. 68 **/ 69 virtual void OnTransientTaskErr(const std::shared_ptr<TransientTaskAppInfo>& info); 70 71 /** 72 * Called back when the app has transient task. 73 * 74 * @param info App info of transient task. 75 **/ 76 virtual void OnAppTransientTaskStart(const std::shared_ptr<TransientTaskAppInfo>& info); 77 78 /** 79 * Called back when the app does not have transient task. 80 * 81 * @param info App info transient task . 82 **/ 83 virtual void OnAppTransientTaskEnd(const std::shared_ptr<TransientTaskAppInfo>& info); 84 85 /** 86 * Called back when a continuous task start. 87 * 88 * @param continuousTaskCallbackInfo Continuous task app info. 89 **/ 90 virtual void OnContinuousTaskStart(const std::shared_ptr<ContinuousTaskCallbackInfo> &continuousTaskCallbackInfo); 91 92 /** 93 * Called back when a continuous task update. 94 * 95 * @param continuousTaskCallbackInfo Continuous task app info. 96 **/ 97 virtual void OnContinuousTaskUpdate(const std::shared_ptr<ContinuousTaskCallbackInfo> &continuousTaskCallbackInfo); 98 99 /** 100 * Called back when a continuous task end. 101 * 102 * @param continuousTaskCallbackInfo Continuous task app info. 103 **/ 104 virtual void OnContinuousTaskStop(const std::shared_ptr<ContinuousTaskCallbackInfo> &continuousTaskCallbackInfo); 105 106 /** 107 * Called back when a continuous task suspend. 108 * 109 * @param continuousTaskCallbackInfo Continuous task app info. 110 **/ 111 virtual void OnContinuousTaskSuspend(const std::shared_ptr<ContinuousTaskCallbackInfo> &continuousTaskCallbackInfo); 112 113 /** 114 * Called back when a continuous task active. 115 * 116 * @param continuousTaskCallbackInfo Continuous task app info. 117 **/ 118 virtual void OnContinuousTaskActive(const std::shared_ptr<ContinuousTaskCallbackInfo> &continuousTaskCallbackInfo); 119 120 /** 121 * Called back when the app does not have continuous task. 122 * 123 * @param uid App uid. 124 **/ 125 virtual void OnAppContinuousTaskStop(int32_t uid); 126 127 /** 128 * Called back when the Background Task Manager Service has died. 129 */ 130 virtual void OnRemoteDied(const wptr<IRemoteObject> &object); 131 132 /** 133 * @brief Apply or unapply efficiency resources of App. 134 * 135 * @param resourceInfo Request params. 136 */ 137 virtual void OnAppEfficiencyResourcesApply(const std::shared_ptr<ResourceCallbackInfo> &resourceInfo); 138 139 /** 140 * @brief Called back when the efficiency resources of App reset. 141 * 142 * @param resourceInfo Request params. 143 */ 144 virtual void OnAppEfficiencyResourcesReset(const std::shared_ptr<ResourceCallbackInfo> &resourceInfo); 145 146 /** 147 * @brief Apply or unapply efficiency resources of process. 148 * 149 * @param resourceInfo Request params. 150 */ 151 virtual void OnProcEfficiencyResourcesApply(const std::shared_ptr<ResourceCallbackInfo> &resourceInfo); 152 153 /** 154 * @brief Called back when the efficiency resources of process reset. 155 * 156 * @param resourceInfo Request params. 157 */ 158 virtual void OnProcEfficiencyResourcesReset(const std::shared_ptr<ResourceCallbackInfo> &resourceInfo); 159 160 /** 161 * @brief Called back when the subscriber get flag. 162 * 163 * @param flag subscriber flag. 164 */ 165 virtual void GetFlag(int32_t &flag); 166 167 private: 168 class BackgroundTaskSubscriberImpl final : public BackgroundTaskSubscriberStub { 169 public: 170 explicit BackgroundTaskSubscriberImpl(BackgroundTaskSubscriber &subscriber); ~BackgroundTaskSubscriberImpl()171 ~BackgroundTaskSubscriberImpl() {} 172 173 /** 174 * @brief Called back when the subscriber is connected to Background Task Manager Service. 175 */ 176 ErrCode OnConnected() override; 177 178 /** 179 * @brief Called back when the subscriber is disconnected from Background Task Manager Service. 180 */ 181 ErrCode OnDisconnected() override; 182 183 /** 184 * @brief Called back when a transient task start. 185 * 186 * @param info Transient task app info. 187 */ 188 ErrCode OnTransientTaskStart(const TransientTaskAppInfo& info) override; 189 190 /** 191 * Called back when the app has transient task. 192 * 193 * @param info App info of transient task. 194 **/ 195 ErrCode OnAppTransientTaskStart(const TransientTaskAppInfo& info) override; 196 197 /** 198 * Called back when the app does not have transient task. 199 * 200 * @param info App info transient task . 201 **/ 202 ErrCode OnAppTransientTaskEnd(const TransientTaskAppInfo& info) override; 203 204 /** 205 * @brief Called back when a transient task end. 206 * 207 * @param info Transient task app info. 208 */ 209 ErrCode OnTransientTaskEnd(const TransientTaskAppInfo& info) override; 210 211 /** 212 * @brief Called back when a transient task err. 213 * 214 * @param info Transient task app info. 215 */ 216 ErrCode OnTransientTaskErr(const TransientTaskAppInfo& info) override; 217 218 /** 219 * @brief Called back when a continuous task start. 220 * 221 * @param continuousTaskCallbackInfo Continuous task app info. 222 */ 223 ErrCode OnContinuousTaskStart(const ContinuousTaskCallbackInfo &continuousTaskCallbackInfo) override; 224 /** 225 * @brief Called back when a continuous task update. 226 * 227 * @param continuousTaskCallbackInfo Continuous task app info. 228 */ 229 ErrCode OnContinuousTaskUpdate(const ContinuousTaskCallbackInfo &continuousTaskCallbackInfo) override; 230 231 /** 232 * @brief Called back when a continuous task stop. 233 * 234 * @param continuousTaskCallbackInfo Continuous task app info. 235 */ 236 ErrCode OnContinuousTaskStop(const ContinuousTaskCallbackInfo &continuousTaskCallbackInfo) override; 237 238 /** 239 * @brief Called back when a continuous task suspend. 240 * 241 * @param continuousTaskCallbackInfo Continuous task app info. 242 */ 243 ErrCode OnContinuousTaskSuspend(const ContinuousTaskCallbackInfo &continuousTaskCallbackInfo) override; 244 245 /** 246 * @brief Called back when a continuous task active. 247 * 248 * @param continuousTaskCallbackInfo Continuous task app info. 249 */ 250 ErrCode OnContinuousTaskActive(const ContinuousTaskCallbackInfo &continuousTaskCallbackInfo) override; 251 252 /** 253 * Called back when the app does not have continuous task. 254 * 255 * @param uid App uid. 256 */ 257 ErrCode OnAppContinuousTaskStop(int32_t uid) override; 258 259 /** 260 * @brief Apply or unapply efficiency resources of App. 261 * 262 * @param resourceInfo Request params. 263 */ 264 ErrCode OnAppEfficiencyResourcesApply(const ResourceCallbackInfo &resourceInfo) override; 265 266 /** 267 * @brief Called back when the efficiency resources of App reset. 268 * 269 * @param resourceInfo Request params. 270 */ 271 ErrCode OnAppEfficiencyResourcesReset(const ResourceCallbackInfo &resourceInfo) override; 272 273 /** 274 * @brief Apply or unapply efficiency resources of process. 275 * 276 * @param resourceInfo Request params. 277 */ 278 ErrCode OnProcEfficiencyResourcesApply(const ResourceCallbackInfo &resourceInfo) override; 279 280 /** 281 * @brief Called back when the efficiency resources of process reset. 282 * 283 * @param resourceInfo Request params. 284 */ 285 ErrCode OnProcEfficiencyResourcesReset(const ResourceCallbackInfo &resourceInfo) override; 286 287 /** 288 * @brief Called back when the subscriber get flag. 289 * 290 * @param flag subscriber flag. 291 */ 292 ErrCode GetFlag(int32_t &flag) override; 293 294 public: 295 BackgroundTaskSubscriber &subscriber_; 296 sptr<IBackgroundTaskMgr> proxy_ {nullptr}; 297 std::mutex mutex_ {}; 298 }; 299 300 private: 301 const sptr<BackgroundTaskSubscriberImpl> GetImpl() const; 302 303 private: 304 sptr<BackgroundTaskSubscriberImpl> impl_ {nullptr}; 305 306 friend class BackgroundTaskManager; 307 308 public: 309 uint32_t flag_ = 0; 310 }; 311 } // namespace BackgroundTaskMgr 312 } // namespace OHOS 313 #endif // FOUNDATION_RESOURCESCHEDULE_BACKGROUND_TASK_MGR_INTERFACES_INNERKITS_INCLUDE_BACKGROUND_TASK_SUBSCRIBER_H