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_CONTINUOUS_TASK_PARAMS_H
17  #define FOUNDATION_RESOURCESCHEDULE_BACKGROUND_TASK_MGR_INTERFACES_INNERKITS_INCLUDE_CONTINUOUS_TASK_PARAMS_H
18  
19  #include <string>
20  
21  #include "iremote_object.h"
22  #include "parcel.h"
23  #include "refbase.h"
24  #include "want_agent.h"
25  
26  namespace OHOS {
27  namespace BackgroundTaskMgr {
28  struct ContinuousTaskParam : public Parcelable {
29      bool isNewApi_ {false};
30      uint32_t bgModeId_ {0};
31      std::shared_ptr<AbilityRuntime::WantAgent::WantAgent> wantAgent_ {nullptr};
32      std::string abilityName_ {""};
33      sptr<IRemoteObject> abilityToken_ {nullptr};
34      std::string appName_ {""};
35      bool isBatchApi_ {false};
36      std::vector<uint32_t> bgModeIds_ {};
37      int32_t abilityId_ {-1};
38      int32_t notificationId_ {-1};
39  
40      ContinuousTaskParam() = default;
41      ContinuousTaskParam(bool isNewApi, uint32_t bgModeId,
42          const std::shared_ptr<AbilityRuntime::WantAgent::WantAgent> wantAgent, const std::string abilityName,
43          const sptr<IRemoteObject> abilityToken, const std::string &appName, bool isBatchApi = false,
44          const std::vector<uint32_t> &bgModeIds = {}, int32_t abilityId = -1)
45          : isNewApi_(isNewApi), bgModeId_(bgModeId), wantAgent_(wantAgent), abilityName_(abilityName),
46            abilityToken_(abilityToken), appName_(appName), isBatchApi_(isBatchApi), bgModeIds_(bgModeIds),
47            abilityId_(abilityId) {}
48      bool ReadFromParcel(Parcel &parcel);
49      bool Marshalling(Parcel &parcel) const override;
50      static ContinuousTaskParam *Unmarshalling(Parcel &parcel);
51  };
52  
53  struct ContinuousTaskParamForInner : public Parcelable {
54      int32_t uid_ {0};
55      uint32_t bgModeId_ {0};
56      bool isStart_ {false};
57      int32_t abilityId_ {-1};
58      uint64_t tokenId_ {0};
59  
60      ContinuousTaskParamForInner() = default;
61      ContinuousTaskParamForInner(int32_t uid, uint32_t bgModeId, bool isStart, int32_t abilityId = -1,
62          uint64_t tokenId = 0)
63          : uid_(uid), bgModeId_(bgModeId), isStart_(isStart), abilityId_(abilityId), tokenId_(tokenId) {}
64  
65      bool ReadFromParcel(Parcel &parcel);
66      bool Marshalling(Parcel &parcel) const override;
67      static ContinuousTaskParamForInner *Unmarshalling(Parcel &parcel);
68  };
69  }  // namespace BackgroundTaskMgr
70  }  // namespace OHOS
71  #endif  // FOUNDATION_RESOURCESCHEDULE_BACKGROUND_TASK_MGR_INTERFACES_INNERKITS_INCLUDE_CONTINUOUS_TASK_PARAMS_H