1/*
2 * Copyright (c) 2024 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 OHOS_ABILITY_RUNTIME_PARAM_H
17#define OHOS_ABILITY_RUNTIME_PARAM_H
18
19#include "iremote_object.h"
20#include "parcel.h"
21#include "refbase.h"
22
23namespace OHOS {
24namespace AbilityRuntime {
25struct LoadParam : public Parcelable {
26    /**
27     * @brief Marshals this object into a Parcel.
28     *
29     * @param parcel Indicates the Parcel object to which the object will be marshaled.
30     */
31    virtual bool Marshalling(Parcel &parcel) const override;
32
33    /**
34     * @brief Unmarshals this object from a Parcel.
35     *
36     * @param parcel Indicates the Parcel object into which the object has been marshaled.
37     */
38    static LoadParam *Unmarshalling(Parcel &parcel);
39    bool ReadFromParcel(Parcel &parcel);
40
41    int32_t abilityRecordId = -1;
42    bool isShellCall = false;
43    sptr<IRemoteObject> token = nullptr;
44    sptr<IRemoteObject> preToken = nullptr;
45    std::string instanceKey = "";
46};
47}  // namespace AbilityRuntime
48}  // namespace OHOS
49#endif  // OHOS_ABILITY_RUNTIME_PARAM_H