1 /* 2 * Copyright (c) 2021-2025 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_DISTRIBUTED_SCHED_INTERFACE_H 17 #define OHOS_DISTRIBUTED_SCHED_INTERFACE_H 18 19 #include <vector> 20 #include "ability_info.h" 21 #include "ability_manager_interface.h" 22 #include "caller_info.h" 23 #include "distributed_extension_types.h" 24 #include "distributed_sched_types.h" 25 #include "distributedsched_ipc_interface_code.h" 26 #ifdef SUPPORT_DISTRIBUTED_FORM_SHARE 27 #include "form_share_info.h" 28 #endif 29 #include "iremote_broker.h" 30 #ifdef SUPPORT_DISTRIBUTED_MISSION_MANAGER 31 #include "mission_info.h" 32 #include "mission/distributed_mission_info.h" 33 #include "mission_snapshot.h" 34 #endif 35 #include "want.h" 36 37 namespace OHOS { 38 namespace DistributedSchedule { 39 class IDistributedSched : public OHOS::IRemoteBroker { 40 public: 41 DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.DistributedSchedule.IDistributedSched"); 42 enum { 43 SAME_ACCOUNT_TYPE = 0, 44 DIFF_ACCOUNT_TYPE, 45 }; 46 struct AccountInfo { 47 int32_t accountType = DIFF_ACCOUNT_TYPE; 48 std::vector<std::string> groupIdList; 49 std::string activeAccountId = ""; 50 int32_t userId = -1; 51 }; 52 53 enum { 54 CALLER = 0, 55 CALLEE, 56 }; 57 58 enum { 59 CONNECT = 0, 60 CALL, 61 }; 62 63 struct FreeInstallInfo { 64 OHOS::AAFwk::Want want; 65 int32_t requestCode = OHOS::AAFwk::DEFAULT_INVAL_VALUE; 66 CallerInfo callerInfo = {}; 67 AccountInfo accountInfo = {}; 68 }; 69 70 virtual int32_t StartRemoteAbility(const OHOS::AAFwk::Want& want, int32_t callerUid, int32_t requestCode, 71 uint32_t accessToken) = 0; 72 virtual int32_t StartAbilityFromRemote(const OHOS::AAFwk::Want& want, 73 const OHOS::AppExecFwk::AbilityInfo& abilityInfo, int32_t requestCode, const CallerInfo& callerInfo, 74 const AccountInfo& accountInfo) = 0; 75 virtual int32_t SendResultFromRemote(OHOS::AAFwk::Want& want, int32_t requestCode, 76 const CallerInfo& callerInfo, const AccountInfo& accountInfo, int32_t resultCode) = 0; 77 virtual int32_t ContinueMission(const std::string& srcDeviceId, const std::string& dstDeviceId, int32_t missionId, 78 const sptr<IRemoteObject>& callback, const OHOS::AAFwk::WantParams& wantParams) = 0; ContinueMission(const std::string & srcDeviceId,const std::string & dstDeviceId,const std::string & bundleName,const sptr<IRemoteObject> & callback,const OHOS::AAFwk::WantParams & wantParams)79 virtual int32_t ContinueMission(const std::string& srcDeviceId, const std::string& dstDeviceId, 80 const std::string& bundleName, const sptr<IRemoteObject>& callback, const OHOS::AAFwk::WantParams& wantParams) 81 { 82 return 0; 83 } 84 virtual int32_t StartContinuation(const OHOS::AAFwk::Want& want, int32_t missionId, int32_t callerUid, 85 int32_t status, uint32_t accessToken) = 0; 86 virtual void NotifyCompleteContinuation(const std::u16string& devId, int32_t sessionId, bool isSuccess) = 0; 87 virtual int32_t NotifyContinuationResultFromRemote(int32_t sessionId, bool isSuccess, 88 const std::string dstInfo) = 0; NotifyDSchedEventResultFromRemote(const std::string type,int32_t dSchedEventResult)89 virtual int32_t NotifyDSchedEventResultFromRemote(const std::string type, int32_t dSchedEventResult) 90 { 91 return 0; 92 } 93 virtual int32_t ConnectRemoteAbility(const OHOS::AAFwk::Want& want, const sptr<IRemoteObject>& connect, 94 int32_t callerUid, int32_t callerPid, uint32_t accessToken) = 0; 95 virtual int32_t DisconnectRemoteAbility(const sptr<IRemoteObject>& connect, int32_t callerUid, 96 uint32_t accessToken) = 0; 97 virtual int32_t ConnectAbilityFromRemote(const OHOS::AAFwk::Want& want, const AppExecFwk::AbilityInfo& abilityInfo, 98 const sptr<IRemoteObject>& connect, const CallerInfo& callerInfo, const AccountInfo& accountInfo) = 0; 99 virtual int32_t DisconnectAbilityFromRemote(const sptr<IRemoteObject>& connect, 100 int32_t uid, const std::string& sourceDeviceId) = 0; 101 virtual int32_t NotifyProcessDiedFromRemote(const CallerInfo& callerInfo) = 0; RegisterDSchedEventListener(const DSchedEventType & type,const sptr<IRemoteObject> & obj)102 virtual int32_t RegisterDSchedEventListener(const DSchedEventType& type, const sptr<IRemoteObject>& obj) 103 { 104 return 0; 105 } UnRegisterDSchedEventListener(const DSchedEventType & type,const sptr<IRemoteObject> & obj)106 virtual int32_t UnRegisterDSchedEventListener(const DSchedEventType& type, const sptr<IRemoteObject>& obj) 107 { 108 return 0; 109 } GetContinueInfo(std::string & dstNetworkId,std::string & srcNetworkId)110 virtual int32_t GetContinueInfo(std::string& dstNetworkId, std::string& srcNetworkId) 111 { 112 return 0; 113 } GetDSchedEventInfo(const DSchedEventType & type,std::vector<EventNotify> & events)114 virtual int32_t GetDSchedEventInfo(const DSchedEventType &type, std::vector<EventNotify> &events) 115 { 116 return 0; 117 } ConnectDExtensionFromRemote(const DExtConnectInfo & connectInfo,DExtConnectResultInfo & resultInfo)118 virtual int32_t ConnectDExtensionFromRemote(const DExtConnectInfo& connectInfo, DExtConnectResultInfo& resultInfo) 119 { 120 return 0; 121 } 122 #ifdef SUPPORT_DISTRIBUTED_MISSION_MANAGER 123 virtual int32_t StartSyncRemoteMissions(const std::string& devId, bool fixConflict, int64_t tag, 124 int32_t callingUid, uint32_t callingTokenId = 0) = 0; 125 virtual int32_t StartSyncMissionsFromRemote(const CallerInfo& callerInfo, 126 std::vector<DstbMissionInfo>& missionInfos) = 0; 127 virtual int32_t StopSyncRemoteMissions(const std::string& devId, int32_t callingUid) = 0; 128 virtual int32_t StopSyncMissionsFromRemote(const CallerInfo& callerInfo) = 0; 129 virtual int32_t RegisterMissionListener(const std::u16string& devId, const sptr<IRemoteObject>& obj, 130 int32_t callingUid) = 0; RegisterOnListener(const std::string & type,const sptr<IRemoteObject> & obj,int32_t callingUid)131 virtual int32_t RegisterOnListener(const std::string& type, const sptr<IRemoteObject>& obj, int32_t callingUid) 132 { 133 return 0; 134 } RegisterOffListener(const std::string & type,const sptr<IRemoteObject> & obj,int32_t callingUid)135 virtual int32_t RegisterOffListener(const std::string& type, const sptr<IRemoteObject>& obj, int32_t callingUid) 136 { 137 return 0; 138 } 139 virtual int32_t UnRegisterMissionListener(const std::u16string& devId, const sptr<IRemoteObject>& obj) = 0; 140 virtual int32_t GetMissionInfos(const std::string& deviceId, int32_t numMissions, 141 std::vector<AAFwk::MissionInfo>& missionInfos) = 0; 142 virtual int32_t GetRemoteMissionSnapshotInfo(const std::string& networkId, int32_t missionId, 143 std::unique_ptr<AAFwk::MissionSnapshot>& missionSnapshot) = 0; 144 virtual int32_t NotifyMissionsChangedFromRemote(const std::vector<DstbMissionInfo>& missionInfos, 145 const CallerInfo& callerInfo) = 0; SetMissionContinueState(int32_t missionId,const AAFwk::ContinueState & state,int32_t callingUid)146 virtual int32_t SetMissionContinueState(int32_t missionId, const AAFwk::ContinueState &state, int32_t callingUid) 147 { 148 return 0; 149 } 150 #endif 151 virtual int32_t StartRemoteAbilityByCall(const OHOS::AAFwk::Want& want, const sptr<IRemoteObject>& connect, 152 int32_t callerUid, int32_t callerPid, uint32_t accessToken) = 0; 153 virtual int32_t ReleaseRemoteAbility(const sptr<IRemoteObject>& connect, 154 const AppExecFwk::ElementName &element) = 0; 155 virtual int32_t StartAbilityByCallFromRemote(const OHOS::AAFwk::Want& want, const sptr<IRemoteObject>& connect, 156 const CallerInfo& callerInfo, const AccountInfo& accountInfo) = 0; 157 virtual int32_t ReleaseAbilityFromRemote(const sptr<IRemoteObject>& connect, const AppExecFwk::ElementName &element, 158 const CallerInfo& callerInfo) = 0; StartRemoteFreeInstall(const OHOS::AAFwk::Want & want,int32_t callerUid,int32_t requestCode,uint32_t accessToken,const sptr<IRemoteObject> & callback)159 virtual int32_t StartRemoteFreeInstall(const OHOS::AAFwk::Want& want, int32_t callerUid, int32_t requestCode, 160 uint32_t accessToken, const sptr<IRemoteObject>& callback) 161 { 162 return 0; 163 } StartFreeInstallFromRemote(const FreeInstallInfo & info,int64_t taskId)164 virtual int32_t StartFreeInstallFromRemote(const FreeInstallInfo& info, int64_t taskId) 165 { 166 return 0; 167 } NotifyCompleteFreeInstallFromRemote(int64_t taskId,int32_t resultCode)168 virtual int32_t NotifyCompleteFreeInstallFromRemote(int64_t taskId, int32_t resultCode) 169 { 170 return 0; 171 } 172 #ifdef SUPPORT_DISTRIBUTED_FORM_SHARE 173 virtual int32_t StartRemoteShareForm(const std::string& remoteDeviceId, 174 const OHOS::AppExecFwk::FormShareInfo& formShareInfo) = 0; 175 virtual int32_t StartShareFormFromRemote( 176 const std::string& remoteDeviceId, const OHOS::AppExecFwk::FormShareInfo& formShareInfo) = 0; 177 #endif 178 virtual int32_t NotifyStateChangedFromRemote(int32_t abilityState, int32_t connectToken, 179 const AppExecFwk::ElementName& element) = 0; 180 virtual int32_t GetDistributedComponentList(std::vector<std::string>& distributedComponents) = 0; 181 virtual int32_t StopRemoteExtensionAbility( 182 const OHOS::AAFwk::Want& want, int32_t callerUid, uint32_t accessToken, int32_t extensionType) = 0; 183 virtual int32_t StopExtensionAbilityFromRemote(const OHOS::AAFwk::Want& want, 184 const CallerInfo& callerInfo, const AccountInfo& accountInfo, int32_t extensionType) = 0; 185 }; 186 } // namespace DistributedSchedule 187 } // namespace OHOS 188 #endif // OHOS_DISTRIBUTED_SCHED_INTERFACE_H 189