1eace7efcSopenharmony_ci/*
2eace7efcSopenharmony_ci * Copyright (c) 2021-2024 Huawei Device Co., Ltd.
3eace7efcSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4eace7efcSopenharmony_ci * you may not use this file except in compliance with the License.
5eace7efcSopenharmony_ci * You may obtain a copy of the License at
6eace7efcSopenharmony_ci *
7eace7efcSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8eace7efcSopenharmony_ci *
9eace7efcSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10eace7efcSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11eace7efcSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12eace7efcSopenharmony_ci * See the License for the specific language governing permissions and
13eace7efcSopenharmony_ci * limitations under the License.
14eace7efcSopenharmony_ci */
15eace7efcSopenharmony_ci
16eace7efcSopenharmony_ci#include "user_callback_proxy.h"
17eace7efcSopenharmony_ci
18eace7efcSopenharmony_ci#include "hilog_tag_wrapper.h"
19eace7efcSopenharmony_ci
20eace7efcSopenharmony_cinamespace OHOS {
21eace7efcSopenharmony_cinamespace AAFwk {
22eace7efcSopenharmony_civoid UserCallbackProxy::OnStopUserDone(int userId, int errcode)
23eace7efcSopenharmony_ci{
24eace7efcSopenharmony_ci    SendRequestCommon(userId, errcode, IUserCallback::UserCallbackCmd::ON_STOP_USER_DONE);
25eace7efcSopenharmony_ci}
26eace7efcSopenharmony_ci
27eace7efcSopenharmony_civoid UserCallbackProxy::OnStartUserDone(int userId, int errcode)
28eace7efcSopenharmony_ci{
29eace7efcSopenharmony_ci    SendRequestCommon(userId, errcode, IUserCallback::UserCallbackCmd::ON_START_USER_DONE);
30eace7efcSopenharmony_ci}
31eace7efcSopenharmony_ci
32eace7efcSopenharmony_civoid UserCallbackProxy::SendRequestCommon(int userId, int errcode, IUserCallback::UserCallbackCmd cmd)
33eace7efcSopenharmony_ci{
34eace7efcSopenharmony_ci    MessageParcel data;
35eace7efcSopenharmony_ci    MessageParcel reply;
36eace7efcSopenharmony_ci    MessageOption option(MessageOption::TF_ASYNC);
37eace7efcSopenharmony_ci
38eace7efcSopenharmony_ci    TAG_LOGI(AAFwkTag::ABILITYMGR,
39eace7efcSopenharmony_ci        "UserCallbackProxy, sendrequest, cmd:%{public}d, userId:%{public}d, errcode:%{public}d", cmd, userId, errcode);
40eace7efcSopenharmony_ci    if (!data.WriteInterfaceToken(IUserCallback::GetDescriptor())) {
41eace7efcSopenharmony_ci        TAG_LOGE(AAFwkTag::ABILITYMGR, "write interface token failed");
42eace7efcSopenharmony_ci        return;
43eace7efcSopenharmony_ci    }
44eace7efcSopenharmony_ci
45eace7efcSopenharmony_ci    if (!data.WriteInt32(userId)) {
46eace7efcSopenharmony_ci        TAG_LOGE(AAFwkTag::ABILITYMGR, "write userId error");
47eace7efcSopenharmony_ci        return;
48eace7efcSopenharmony_ci    }
49eace7efcSopenharmony_ci
50eace7efcSopenharmony_ci    if (!data.WriteInt32(errcode)) {
51eace7efcSopenharmony_ci        TAG_LOGE(AAFwkTag::ABILITYMGR, "write errcode error");
52eace7efcSopenharmony_ci        return;
53eace7efcSopenharmony_ci    }
54eace7efcSopenharmony_ci
55eace7efcSopenharmony_ci    sptr<IRemoteObject> remote = Remote();
56eace7efcSopenharmony_ci    if (remote == nullptr) {
57eace7efcSopenharmony_ci        TAG_LOGE(AAFwkTag::ABILITYMGR, "null remote object");
58eace7efcSopenharmony_ci        return;
59eace7efcSopenharmony_ci    }
60eace7efcSopenharmony_ci
61eace7efcSopenharmony_ci    int error = remote->SendRequest(cmd, data, reply, option);
62eace7efcSopenharmony_ci    if (error != NO_ERROR) {
63eace7efcSopenharmony_ci        TAG_LOGE(AAFwkTag::ABILITYMGR, "SendRequest fail, error: %{public}d", error);
64eace7efcSopenharmony_ci        return;
65eace7efcSopenharmony_ci    }
66eace7efcSopenharmony_ci}
67eace7efcSopenharmony_ci}  // namespace AAFwk
68eace7efcSopenharmony_ci}  // namespace OHOS
69