1a34a8711Sopenharmony_ci/* 2a34a8711Sopenharmony_ci * Copyright (C) 2024 Huawei Device Co., Ltd. 3a34a8711Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4a34a8711Sopenharmony_ci * you may not use this file except in compliance with the License. 5a34a8711Sopenharmony_ci * You may obtain a copy of the License at 6a34a8711Sopenharmony_ci * 7a34a8711Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8a34a8711Sopenharmony_ci * 9a34a8711Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10a34a8711Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11a34a8711Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12a34a8711Sopenharmony_ci * See the License for the specific language governing permissions and 13a34a8711Sopenharmony_ci * limitations under the License. 14a34a8711Sopenharmony_ci */ 15a34a8711Sopenharmony_ci 16a34a8711Sopenharmony_ci#include "skeleton_wrapper.h" 17a34a8711Sopenharmony_ci 18a34a8711Sopenharmony_ci#include "ipc_skeleton.h" 19a34a8711Sopenharmony_ci#include "ipc_thread_skeleton.h" 20a34a8711Sopenharmony_cinamespace OHOS { 21a34a8711Sopenharmony_cinamespace IpcRust { 22a34a8711Sopenharmony_ci#ifdef CONFIG_IPC_SINGLE 23a34a8711Sopenharmony_ciusing namespace IPC_SINGLE; 24a34a8711Sopenharmony_ci#endif 25a34a8711Sopenharmony_cibool SetMaxWorkThreadNum(int maxThreadNum) 26a34a8711Sopenharmony_ci{ 27a34a8711Sopenharmony_ci return OHOS::IPCSkeleton::SetMaxWorkThreadNum(maxThreadNum); 28a34a8711Sopenharmony_ci} 29a34a8711Sopenharmony_ci 30a34a8711Sopenharmony_civoid JoinWorkThread() 31a34a8711Sopenharmony_ci{ 32a34a8711Sopenharmony_ci return OHOS::IPCSkeleton::JoinWorkThread(); 33a34a8711Sopenharmony_ci} 34a34a8711Sopenharmony_ci 35a34a8711Sopenharmony_civoid StopWorkThread() 36a34a8711Sopenharmony_ci{ 37a34a8711Sopenharmony_ci return OHOS::IPCSkeleton::StopWorkThread(); 38a34a8711Sopenharmony_ci} 39a34a8711Sopenharmony_ci 40a34a8711Sopenharmony_ciuint64_t GetCallingPid() 41a34a8711Sopenharmony_ci{ 42a34a8711Sopenharmony_ci return OHOS::IPCSkeleton::GetCallingPid(); 43a34a8711Sopenharmony_ci} 44a34a8711Sopenharmony_ci 45a34a8711Sopenharmony_ciuint64_t GetCallingRealPid() 46a34a8711Sopenharmony_ci{ 47a34a8711Sopenharmony_ci return OHOS::IPCSkeleton::GetCallingRealPid(); 48a34a8711Sopenharmony_ci} 49a34a8711Sopenharmony_ci 50a34a8711Sopenharmony_ciuint64_t GetCallingUid() 51a34a8711Sopenharmony_ci{ 52a34a8711Sopenharmony_ci return OHOS::IPCSkeleton ::GetCallingUid(); 53a34a8711Sopenharmony_ci} 54a34a8711Sopenharmony_ci 55a34a8711Sopenharmony_ciuint32_t GetCallingTokenID() 56a34a8711Sopenharmony_ci{ 57a34a8711Sopenharmony_ci return OHOS::IPCSkeleton ::GetCallingTokenID(); 58a34a8711Sopenharmony_ci} 59a34a8711Sopenharmony_ci 60a34a8711Sopenharmony_ciuint64_t GetCallingFullTokenID() 61a34a8711Sopenharmony_ci{ 62a34a8711Sopenharmony_ci return OHOS::IPCSkeleton ::GetCallingFullTokenID(); 63a34a8711Sopenharmony_ci} 64a34a8711Sopenharmony_ci 65a34a8711Sopenharmony_ciuint32_t GetFirstTokenID() 66a34a8711Sopenharmony_ci{ 67a34a8711Sopenharmony_ci return OHOS::IPCSkeleton ::GetFirstTokenID(); 68a34a8711Sopenharmony_ci} 69a34a8711Sopenharmony_ci 70a34a8711Sopenharmony_ciuint64_t GetFirstFullTokenID() 71a34a8711Sopenharmony_ci{ 72a34a8711Sopenharmony_ci return OHOS::IPCSkeleton ::GetFirstFullTokenID(); 73a34a8711Sopenharmony_ci} 74a34a8711Sopenharmony_ci 75a34a8711Sopenharmony_ciuint64_t GetSelfTokenID() 76a34a8711Sopenharmony_ci{ 77a34a8711Sopenharmony_ci return OHOS::IPCSkeleton::GetSelfTokenID(); 78a34a8711Sopenharmony_ci} 79a34a8711Sopenharmony_ci 80a34a8711Sopenharmony_cirust::string GetLocalDeviceID() 81a34a8711Sopenharmony_ci{ 82a34a8711Sopenharmony_ci return OHOS::IPCSkeleton::GetLocalDeviceID(); 83a34a8711Sopenharmony_ci} 84a34a8711Sopenharmony_ci 85a34a8711Sopenharmony_cirust::string GetCallingDeviceID() 86a34a8711Sopenharmony_ci{ 87a34a8711Sopenharmony_ci return OHOS::IPCSkeleton::GetCallingDeviceID(); 88a34a8711Sopenharmony_ci} 89a34a8711Sopenharmony_ci 90a34a8711Sopenharmony_cibool IsLocalCalling() 91a34a8711Sopenharmony_ci{ 92a34a8711Sopenharmony_ci return OHOS::IPCSkeleton::IsLocalCalling(); 93a34a8711Sopenharmony_ci} 94a34a8711Sopenharmony_ci 95a34a8711Sopenharmony_cistd::unique_ptr<IRemoteObjectWrapper> GetContextObject() 96a34a8711Sopenharmony_ci{ 97a34a8711Sopenharmony_ci auto wrapper = std::make_unique<IRemoteObjectWrapper>(); 98a34a8711Sopenharmony_ci 99a34a8711Sopenharmony_ci wrapper->is_raw_ = true; 100a34a8711Sopenharmony_ci wrapper->raw_ = OHOS::IPCSkeleton::GetContextObject(); 101a34a8711Sopenharmony_ci 102a34a8711Sopenharmony_ci return wrapper; 103a34a8711Sopenharmony_ci} 104a34a8711Sopenharmony_ci 105a34a8711Sopenharmony_ciint FlushCommands(IRemoteObjectWrapper &object) 106a34a8711Sopenharmony_ci{ 107a34a8711Sopenharmony_ci return IPCSkeleton::FlushCommands(object.GetInner()); 108a34a8711Sopenharmony_ci} 109a34a8711Sopenharmony_ci 110a34a8711Sopenharmony_cirust::string ResetCallingIdentity() 111a34a8711Sopenharmony_ci{ 112a34a8711Sopenharmony_ci return IPCSkeleton::ResetCallingIdentity(); 113a34a8711Sopenharmony_ci} 114a34a8711Sopenharmony_ci 115a34a8711Sopenharmony_cibool SetCallingIdentity(rust::str identity) 116a34a8711Sopenharmony_ci{ 117a34a8711Sopenharmony_ci auto s = std::string(identity); 118a34a8711Sopenharmony_ci return IPCSkeleton::SetCallingIdentity(s); 119a34a8711Sopenharmony_ci} 120a34a8711Sopenharmony_ci 121a34a8711Sopenharmony_cibool IsHandlingTransaction() 122a34a8711Sopenharmony_ci{ 123a34a8711Sopenharmony_ci if (IPCThreadSkeleton::GetActiveInvoker() != nullptr) { 124a34a8711Sopenharmony_ci return true; 125a34a8711Sopenharmony_ci } 126a34a8711Sopenharmony_ci 127a34a8711Sopenharmony_ci return false; 128a34a8711Sopenharmony_ci} 129a34a8711Sopenharmony_ci 130a34a8711Sopenharmony_ci} // namespace IpcRust 131a34a8711Sopenharmony_ci} // namespace OHOS