199552fe9Sopenharmony_ci/*
299552fe9Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
399552fe9Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
499552fe9Sopenharmony_ci * you may not use this file except in compliance with the License.
599552fe9Sopenharmony_ci * You may obtain a copy of the License at
699552fe9Sopenharmony_ci *
799552fe9Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
899552fe9Sopenharmony_ci *
999552fe9Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1099552fe9Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1199552fe9Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1299552fe9Sopenharmony_ci * See the License for the specific language governing permissions and
1399552fe9Sopenharmony_ci * limitations under the License.
1499552fe9Sopenharmony_ci */
1599552fe9Sopenharmony_ci
1699552fe9Sopenharmony_ci#ifndef FOUNDATION_RESOURCESCHEDULE_STANDBY_SERVICE_UTILS_IPC_UTIL_H
1799552fe9Sopenharmony_ci#define FOUNDATION_RESOURCESCHEDULE_STANDBY_SERVICE_UTILS_IPC_UTIL_H
1899552fe9Sopenharmony_ci
1999552fe9Sopenharmony_ci#include <iremote_object.h>
2099552fe9Sopenharmony_ci#include <iservice_registry.h>
2199552fe9Sopenharmony_ci#include <string_ex.h>
2299552fe9Sopenharmony_ci
2399552fe9Sopenharmony_cinamespace OHOS {
2499552fe9Sopenharmony_cinamespace DevStandbyMgr {
2599552fe9Sopenharmony_ci#define READ_PARCEL(in, type, data)                         \
2699552fe9Sopenharmony_ci    do {                                                    \
2799552fe9Sopenharmony_ci        if (!(in).Read##type(data)) {                       \
2899552fe9Sopenharmony_ci            STANDBYSERVICE_LOGE("Failed to read "#data);            \
2999552fe9Sopenharmony_ci            return;                                         \
3099552fe9Sopenharmony_ci        }                                                   \
3199552fe9Sopenharmony_ci    } while (0)
3299552fe9Sopenharmony_ci
3399552fe9Sopenharmony_ci#define READ_PARCEL_WITH_RET(in, type, data, ret)           \
3499552fe9Sopenharmony_ci    do {                                                    \
3599552fe9Sopenharmony_ci        if (!(in).Read##type(data)) {                       \
3699552fe9Sopenharmony_ci            STANDBYSERVICE_LOGE("Failed to read "#data);            \
3799552fe9Sopenharmony_ci            return (ret);                                   \
3899552fe9Sopenharmony_ci        }                                                   \
3999552fe9Sopenharmony_ci    } while (0)
4099552fe9Sopenharmony_ci
4199552fe9Sopenharmony_ci#define WRITE_PARCEL(out, type, data)                       \
4299552fe9Sopenharmony_ci    do {                                                    \
4399552fe9Sopenharmony_ci        if (!(out).Write##type(data)) {                     \
4499552fe9Sopenharmony_ci            STANDBYSERVICE_LOGE("Failed to write "#data);           \
4599552fe9Sopenharmony_ci            return;                                         \
4699552fe9Sopenharmony_ci        }                                                   \
4799552fe9Sopenharmony_ci    } while (0)
4899552fe9Sopenharmony_ci
4999552fe9Sopenharmony_ci#define WRITE_PARCEL_WITH_RET(out, type, data, ret)         \
5099552fe9Sopenharmony_ci    do {                                                    \
5199552fe9Sopenharmony_ci        if (!(out).Write##type(data)) {                     \
5299552fe9Sopenharmony_ci            STANDBYSERVICE_LOGE("Failed to write "#data);           \
5399552fe9Sopenharmony_ci            return (ret);                                   \
5499552fe9Sopenharmony_ci        }                                                   \
5599552fe9Sopenharmony_ci    } while (0)
5699552fe9Sopenharmony_ci
5799552fe9Sopenharmony_ci};  // namespace DevStandbyMgr
5899552fe9Sopenharmony_ci};  // namespace OHOS
5999552fe9Sopenharmony_ci#endif  // FOUNDATION_RESOURCESCHEDULE_STANDBY_SERVICE_UTILS_IPC_UTIL_H
60