1545fdf9bSopenharmony_ci/*
2545fdf9bSopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd.
3545fdf9bSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4545fdf9bSopenharmony_ci * you may not use this file except in compliance with the License.
5545fdf9bSopenharmony_ci * You may obtain a copy of the License at
6545fdf9bSopenharmony_ci *
7545fdf9bSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8545fdf9bSopenharmony_ci *
9545fdf9bSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10545fdf9bSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11545fdf9bSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12545fdf9bSopenharmony_ci * See the License for the specific language governing permissions and
13545fdf9bSopenharmony_ci * limitations under the License.
14545fdf9bSopenharmony_ci */
15545fdf9bSopenharmony_ci
16545fdf9bSopenharmony_ci#ifndef FOUNDATION_APPEXECFWK_STANDARD_TOOLS_BM_INCLUDE_STATUS_RECEIVER_IMPL_H
17545fdf9bSopenharmony_ci#define FOUNDATION_APPEXECFWK_STANDARD_TOOLS_BM_INCLUDE_STATUS_RECEIVER_IMPL_H
18545fdf9bSopenharmony_ci
19545fdf9bSopenharmony_ci#include <future>
20545fdf9bSopenharmony_ci#include "status_receiver_host.h"
21545fdf9bSopenharmony_ci
22545fdf9bSopenharmony_cinamespace OHOS {
23545fdf9bSopenharmony_cinamespace AppExecFwk {
24545fdf9bSopenharmony_ciclass StatusReceiverImpl : public StatusReceiverHost {
25545fdf9bSopenharmony_cipublic:
26545fdf9bSopenharmony_ci    StatusReceiverImpl(int32_t waittingTime);
27545fdf9bSopenharmony_ci    StatusReceiverImpl();
28545fdf9bSopenharmony_ci    virtual ~StatusReceiverImpl() override;
29545fdf9bSopenharmony_ci
30545fdf9bSopenharmony_ci    virtual void OnStatusNotify(const int progress) override;
31545fdf9bSopenharmony_ci    virtual void OnFinished(const int32_t resultCode, const std::string &resultMsg) override;
32545fdf9bSopenharmony_ci    int32_t GetResultCode() const;
33545fdf9bSopenharmony_ci    std::string GetResultMsg() const;
34545fdf9bSopenharmony_ci
35545fdf9bSopenharmony_ciprivate:
36545fdf9bSopenharmony_ci    mutable std::promise<int32_t> resultCodeSignal_;
37545fdf9bSopenharmony_ci    mutable std::promise<std::string> resultMsgSignal_;
38545fdf9bSopenharmony_ci    int32_t waittingTime_;
39545fdf9bSopenharmony_ci    bool isSetValue = false;
40545fdf9bSopenharmony_ci    std::mutex setValueMutex_;
41545fdf9bSopenharmony_ci    DISALLOW_COPY_AND_MOVE(StatusReceiverImpl);
42545fdf9bSopenharmony_ci};
43545fdf9bSopenharmony_ci}  // namespace AppExecFwk
44545fdf9bSopenharmony_ci}  // namespace OHOS
45545fdf9bSopenharmony_ci
46545fdf9bSopenharmony_ci#endif  // FOUNDATION_APPEXECFWK_STANDARD_TOOLS_BM_INCLUDE_STATUS_RECEIVER_IMPL_H
47