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 OHOS_FORM_FWK_FORM_CALLER_MGR_H 17 #define OHOS_FORM_FWK_FORM_CALLER_MGR_H 18 19 #include <singleton.h> 20 21 #include "event_handler.h" 22 #include "form_host_caller.h" 23 #include "form_provider_interface.h" 24 #include "form_provider_caller.h" 25 #include "iremote_object.h" 26 27 namespace OHOS { 28 namespace AppExecFwk { 29 /** 30 * @class FormCallerMgr 31 * FormCallerMgr is used to manager form host caller and form provider caller. 32 */ 33 class FormCallerMgr final : public DelayedRefSingleton<FormCallerMgr> { 34 DECLARE_DELAYED_REF_SINGLETON(FormCallerMgr) 35 public: 36 DISALLOW_COPY_AND_MOVE(FormCallerMgr); 37 // for host 38 void AddFormHostCaller(const FormJsInfo &formJsInfo, const sptr<IRemoteObject> &callerToken); 39 40 std::shared_ptr<FormHostCaller> GetFormHostCaller(int64_t formId); 41 42 void RemoveFormHostCaller(int64_t formId); 43 44 // for provider 45 void AddFormProviderCaller(const FormJsInfo &formJsInfo, const sptr<IRemoteObject> &callerToken); 46 47 void GetFormProviderCaller(int64_t formId, std::vector<std::shared_ptr<FormProviderCaller>> &formProviderCallers); 48 49 void RemoveFormProviderCaller(int64_t formId, const sptr<IRemoteObject> &callerToken); 50 private: 51 std::shared_ptr<EventHandler> GetEventHandler(); 52 53 // for host 54 void OnHostCallBackDied(const wptr<IRemoteObject> &remote); 55 void HandleHostCallBackDiedTask(const sptr<IRemoteObject> &remote); 56 void RemoveFormHostCaller(const sptr<IRemoteObject> &callerToken); 57 58 // for provider 59 void OnProviderCallBackDied(const wptr<IRemoteObject> &remote); 60 void HandleProviderCallBackDiedTask(const sptr<IRemoteObject> &remote); 61 void RemoveFormProviderCaller(const sptr<IRemoteObject> &callerToken); 62 63 std::shared_ptr<EventHandler> eventHandler_ = nullptr; 64 // for host 65 mutable std::mutex formHostCallerMutex_; 66 std::map<int64_t, std::shared_ptr<FormHostCaller>> formHostCallers_; 67 68 // for provider 69 mutable std::mutex formProviderCallerMutex_; 70 std::vector<std::shared_ptr<FormProviderCaller>> formProviderCallers_; 71 }; 72 } // namespace AppExecFwk 73 } // namespace OHOS 74 #endif // OHOS_FORM_FWK_FORM_CALLER_MGR_H 75