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_APPEXECFWK_SERVICES_BUNDLEMGR_INCLUDE_BUNDLE_STREAM_INSTALLER_HOST_IMPL_H
17  #define FOUNDATION_APPEXECFWK_SERVICES_BUNDLEMGR_INCLUDE_BUNDLE_STREAM_INSTALLER_HOST_IMPL_H
18  
19  #include <mutex>
20  #include <vector>
21  
22  #include "bundle_stream_installer_host.h"
23  #include "install_param.h"
24  #include "status_receiver_interface.h"
25  
26  namespace OHOS {
27  namespace AppExecFwk {
28  class BundleStreamInstallerHostImpl : public BundleStreamInstallerHost {
29  public:
30      BundleStreamInstallerHostImpl(uint32_t installerId, int32_t installedUid);
31      virtual ~BundleStreamInstallerHostImpl() override;
32  
33      bool Init(const InstallParam &installParam, const sptr<IStatusReceiver> &statusReceiver,
34          const std::vector<std::string> &originHapPaths);
35      virtual void UnInit() override;
36  
37      virtual int32_t CreateStream(const std::string &fileName) override;
38      virtual int32_t CreateSignatureFileStream(const std::string &moduleName, const std::string &fileName) override;
39      virtual int32_t CreateSharedBundleStream(const std::string &bundleName, uint32_t sharedBundleIdx) override;
40      virtual int32_t CreatePgoFileStream(const std::string &moduleName, const std::string &fileName) override;
41      virtual bool Install() override;
42  
43      virtual uint32_t GetInstallerId() const override;
44      virtual void SetInstallerId(uint32_t installerId) override;
45  
46  private:
47      std::string tempDir_;
48      uint32_t installerId_ = -1;
49      std::vector<int32_t> streamFdVec_;
50      InstallParam installParam_;
51      int32_t installedUid_;
52      sptr<IStatusReceiver> receiver_ = nullptr;
53      bool isInstallSharedBundlesOnly_ = true;
54      std::string tempSignatureFileDir_;
55      std::string tempPgoFileDir_;
56      std::mutex fdVecMutex_;
57      std::vector<std::string> originHapPaths_;
58  };
59  } // AppExecFwk
60  } // OHOS
61  
62  
63  #endif // FOUNDATION_APPEXECFWK_SERVICES_BUNDLEMGR_INCLUDE_BUNDLE_STREAM_INSTALLER_HOST_IMPL_H