1/* 2 * Copyright (c) 2022-2023 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#include "distributed_ability_manager_client.h" 16 17#include "base/continuationmgr_log.h" 18#include "distributed_ability_manager_proxy.h" 19#include "if_system_ability_manager.h" 20#include "ipc_skeleton.h" 21#include "iservice_registry.h" 22#include "system_ability_definition.h" 23 24namespace OHOS { 25namespace DistributedSchedule { 26namespace { 27const std::string TAG = "ContinuationManagerClient"; 28} 29 30IMPLEMENT_SINGLE_INSTANCE(DistributedAbilityManagerClient); 31 32sptr<IDistributedAbilityManager> DistributedAbilityManagerClient::GetContinuationMgrService() 33{ 34 auto samgrProxy = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); 35 if (samgrProxy == nullptr) { 36 HILOGE("get samgr failed."); 37 return nullptr; 38 } 39 sptr<IRemoteObject> remoteObj = samgrProxy->GetSystemAbility(CONTINUATION_MANAGER_SA_ID); 40 if (remoteObj == nullptr) { 41 HILOGE("get continuationMgrService SA failed."); 42 return nullptr; 43 } 44 return iface_cast<IDistributedAbilityManager>(remoteObj); 45} 46 47int32_t DistributedAbilityManagerClient::Register( 48 const std::shared_ptr<ContinuationExtraParams>& continuationExtraParams, int32_t& token) 49{ 50 HILOGD("called."); 51 sptr<IDistributedAbilityManager> continuationMgrProxy = GetContinuationMgrService(); 52 if (continuationMgrProxy == nullptr) { 53 HILOGE("continuationMgrProxy is nullptr"); 54 return ERR_NULL_OBJECT; 55 } 56 return continuationMgrProxy->Register(continuationExtraParams, token); 57} 58 59int32_t DistributedAbilityManagerClient::Unregister(int32_t token) 60{ 61 HILOGD("called."); 62 sptr<IDistributedAbilityManager> continuationMgrProxy = GetContinuationMgrService(); 63 if (continuationMgrProxy == nullptr) { 64 HILOGE("continuationMgrProxy is nullptr"); 65 return ERR_NULL_OBJECT; 66 } 67 return continuationMgrProxy->Unregister(token); 68} 69 70int32_t DistributedAbilityManagerClient::RegisterDeviceSelectionCallback(int32_t token, const std::string& cbType, 71 const sptr<DeviceSelectionNotifierStub>& notifier) 72{ 73 HILOGD("called."); 74 sptr<IDistributedAbilityManager> continuationMgrProxy = GetContinuationMgrService(); 75 if (continuationMgrProxy == nullptr) { 76 HILOGE("continuationMgrProxy is nullptr"); 77 return ERR_NULL_OBJECT; 78 } 79 return continuationMgrProxy->RegisterDeviceSelectionCallback(token, cbType, notifier); 80} 81 82int32_t DistributedAbilityManagerClient::UnregisterDeviceSelectionCallback(int32_t token, const std::string& cbType) 83{ 84 HILOGD("called."); 85 sptr<IDistributedAbilityManager> continuationMgrProxy = GetContinuationMgrService(); 86 if (continuationMgrProxy == nullptr) { 87 HILOGE("continuationMgrProxy is nullptr"); 88 return ERR_NULL_OBJECT; 89 } 90 return continuationMgrProxy->UnregisterDeviceSelectionCallback(token, cbType); 91} 92 93int32_t DistributedAbilityManagerClient::UpdateConnectStatus(int32_t token, const std::string& deviceId, 94 const DeviceConnectStatus& deviceConnectStatus) 95{ 96 HILOGD("called."); 97 sptr<IDistributedAbilityManager> continuationMgrProxy = GetContinuationMgrService(); 98 if (continuationMgrProxy == nullptr) { 99 HILOGE("continuationMgrProxy is nullptr"); 100 return ERR_NULL_OBJECT; 101 } 102 return continuationMgrProxy->UpdateConnectStatus(token, deviceId, deviceConnectStatus); 103} 104 105int32_t DistributedAbilityManagerClient::StartDeviceManager( 106 int32_t token, const std::shared_ptr<ContinuationExtraParams>& continuationExtraParams) 107{ 108 HILOGD("called."); 109 sptr<IDistributedAbilityManager> continuationMgrProxy = GetContinuationMgrService(); 110 if (continuationMgrProxy == nullptr) { 111 HILOGE("continuationMgrProxy is nullptr"); 112 return ERR_NULL_OBJECT; 113 } 114 return continuationMgrProxy->StartDeviceManager(token, continuationExtraParams); 115} 116} // namespace DistributedSchedule 117} // namespace OHOS