* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef APP_IDENTITY_H
#define APP_IDENTITY_H
#include <string>
#include <parcel.h>
namespace OHOS {
namespace Location {
class AppIdentity : public Parcelable {
public:
AppIdentity();
explicit AppIdentity(pid_t uid, pid_t pid, uint32_t tokenId, uint64_t tokenIdEx, uint32_t firstTokenId);
virtual ~AppIdentity() = default;
inline pid_t GetPid() const
{
return pid_;
}
inline void SetPid(pid_t pid)
{
pid_ = pid;
}
inline pid_t GetUid() const
{
return uid_;
}
inline void SetUid(pid_t uid)
{
uid_ = uid;
}
inline uint32_t GetTokenId() const
{
return tokenId_;
}
inline void SetTokenId(uint32_t tokenId)
{
tokenId_ = tokenId;
}
inline uint64_t GetTokenIdEx() const
{
return tokenIdEx_;
}
inline void SetTokenIdEx(uint64_t tokenIdEx)
{
tokenIdEx_ = tokenIdEx;
}
inline uint32_t GetFirstTokenId() const
{
return firstTokenId_;
}
inline void SetFirstTokenId(uint32_t firstTokenId)
{
firstTokenId_ = firstTokenId;
}
inline std::string GetBundleName() const
{
return bundleName_;
}
inline void SetBundleName(std::string bundleName)
{
bundleName_ = bundleName;
}
void ReadFromParcel(Parcel& parcel)
{
uid_ = parcel.ReadInt32();
pid_ = parcel.ReadInt32();
tokenId_ = static_cast<uint32_t>(parcel.ReadInt32());
tokenIdEx_ = parcel.ReadInt64();
firstTokenId_ = static_cast<uint32_t>(parcel.ReadInt32());
bundleName_ = parcel.ReadString();
}
bool Marshalling(Parcel& parcel) const
{
return parcel.WriteInt32(uid_) &&
parcel.WriteInt32(pid_) &&
parcel.WriteInt32(tokenId_) &&
parcel.WriteInt64(tokenIdEx_) &&
parcel.WriteInt32(firstTokenId_) &&
parcel.WriteString(bundleName_);
}
static std::shared_ptr<AppIdentity> UnmarshallingShared(Parcel& parcel)
{
auto identity = std::make_shared<AppIdentity>();
identity->ReadFromParcel(parcel);
return identity;
}
static AppIdentity* Unmarshalling(Parcel& parcel)
{
auto identity = new AppIdentity();
identity->ReadFromParcel(parcel);
return identity;
}
std::string ToString() const;
private:
pid_t uid_;
pid_t pid_;
uint32_t tokenId_;
uint64_t tokenIdEx_;
uint32_t firstTokenId_;
std::string bundleName_;
};
}
}
#endif