1 /* 2 * Copyright (c) 2020 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_ABILITYMANAGERSERVICE_FEATURE_H 17 #define OHOS_ABILITYMANAGERSERVICE_FEATURE_H 18 19 #include "ability_mgr_handler.h" 20 #include "ability_service_interface.h" 21 #include "dmsfwk_interface.h" 22 #include "feature.h" 23 #include "iproxy_client.h" 24 #include "iunknown.h" 25 #include "nocopyable.h" 26 #define DISTRIBUTED_SCHEDULE_SERVICE "dtbschedsrv" 27 #define DMSLITE_FEATURE "dmslite" 28 29 namespace OHOS { 30 typedef int32 (*InvokeFunc)(const void *origin, IpcIo *req); 31 typedef void (*OnRequestCallbackFunc)(const void *data, int32_t ret); 32 33 class AbilityMgrFeature : public Feature { 34 public: 35 static int32 StartAbility(const Want *want); 36 static int32 TerminateAbility(uint64_t token); 37 static int32 ConnectAbility(const Want *want, SvcIdentity *svc, uint64_t token); 38 static int32 DisconnectAbility(SvcIdentity *svc, uint64_t token); 39 static int32 StopAbility(const Want *want); 40 41 static int32 Invoke(IServerProxy *iProxy, int funcId, void *origin, IpcIo *req, IpcIo *reply); 42 43 static void AppDeathNotify(void *args); GetInstance()44 static AbilityMgrFeature *GetInstance() 45 { 46 static AbilityMgrFeature instance; 47 return &instance; 48 } 49 ~AbilityMgrFeature() = default; 50 private: 51 AbilityMgrFeature(); 52 static int32 StartAbilityInner(const Want *want, pid_t callingUid); 53 static int32 StartRemoteAbilityInner(const Want *want, const char *deviceId, 54 pid_t uid, OnRequestCallbackFunc callback); 55 static int32 ConnectAbilityInner(const Want *want, SvcIdentity *svc, uint64_t token, pid_t callingUid); 56 static int32 StopAbilityInner(const Want *want, pid_t callingUid); 57 static int32 StartAbilityInvoke(const void *origin, IpcIo *req); 58 static int32 StartAbilityWithCbInvoke(const void *origin, IpcIo *req); 59 static int32 TerminateAbilityInvoke(const void *origin, IpcIo *req); 60 static int32 ConnectAbilityInvoke(const void *origin, IpcIo *req); 61 static int32 DisconnectAbilityInvoke(const void *origin, IpcIo *req); 62 static int32 StopAbilityInvoke(const void *origin, IpcIo *req); 63 64 static int32 AbilityTransactionDoneInvoke(const void *origin, IpcIo *req); 65 static int32 AttachBundleInvoke(const void *origin, IpcIo *req); 66 static int32 ConnectAbilityDoneInvoke(const void *origin, IpcIo *req); 67 static int32 DisconnectAbilityDoneInvoke(const void *origin, IpcIo *req); 68 static int32 RestartApp(const char *bundleName); 69 70 static const char *GetFeatureName(Feature *feature); 71 static void OnFeatureInitialize(Feature *feature, Service *parent, Identity identity); 72 static void OnFeatureStop(Feature *feature, Identity identity); 73 static BOOL OnFeatureMessage(Feature *feature, Request *request); 74 static void OnRequestCallback(const void *data, int32_t ret); 75 76 private: 77 Identity identity_; 78 static SvcIdentity svc_; 79 static IDmsListener *myCallback_; 80 static InvokeFunc invokeFuncList[INNER_BEGIN]; 81 DISALLOW_COPY_AND_MOVE(AbilityMgrFeature); 82 }; 83 84 typedef struct { 85 INHERIT_IUNKNOWNENTRY(AmsInterface); 86 AbilityMgrFeature *ams; 87 } AbilityMgrFeatureImpl; 88 } // namespace OHOS 89 #endif // OHOS_ABILITYMANAGERSERVICE_FEATURE_H 90