/* * Copyright (C) 2016 The Android Open Source Project * * 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. */ #include "android/net/UidRange.h" #define LOG_TAG "UidRange" #include #include #include #include using android::BAD_VALUE; using android::NO_ERROR; using android::Parcel; using android::status_t; namespace android { namespace net { UidRange::UidRange(int32_t start, int32_t stop) { ALOG_ASSERT(start <= stop, "start UID must be less than or equal to stop UID"); mStart = start; mStop = stop; } status_t UidRange::writeToParcel(Parcel* parcel) const { /* * Keep implementation in sync with writeToParcel() in * frameworks/base/core/java/android/net/UidRange.java. */ if (status_t err = parcel->writeInt32(mStart)) { return err; } if (status_t err = parcel->writeInt32(mStop)) { return err; } return NO_ERROR; } status_t UidRange::readFromParcel(const Parcel* parcel) { /* * Keep implementation in sync with readFromParcel() in * frameworks/base/core/java/android/net/UidRange.java. */ if (status_t err = parcel->readInt32(&mStart)) { return err; } if (status_t err = parcel->readInt32(&mStop)) { return err; } if (mStart > mStop) return BAD_VALUE; return NO_ERROR; } void UidRange::setStart(int32_t uid) { if (mStop != -1) { ALOG_ASSERT(uid <= mStop, "start UID must be less than or equal to stop UID"); } mStart = uid; } void UidRange::setStop(int32_t uid) { if (mStart != -1) { ALOG_ASSERT(mStart <= uid, "stop UID must be greater than or equal to start UID"); } mStop = uid; } int32_t UidRange::getStart() const { return mStart; } int32_t UidRange::getStop() const { return mStop; } uint32_t UidRange::length() const { if (mStart == -1 || mStop == -1) { return 0; } return static_cast(mStop - mStart + 1); } } // namespace net } // namespace android