1d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang/*
2d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang * Copyright (C) 2017 The Android Open Source Project
3d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang *
4d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang * Licensed under the Apache License, Version 2.0 (the "License");
5d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang * you may not use this file except in compliance with the License.
6d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang * You may obtain a copy of the License at
7d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang *
8d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang *      http://www.apache.org/licenses/LICENSE-2.0
9d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang *
10d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang * Unless required by applicable law or agreed to in writing, software
11d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang * distributed under the License is distributed on an "AS IS" BASIS,
12d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang * See the License for the specific language governing permissions and
14d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang * limitations under the License.
15d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang *
16d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang */
17d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang
18d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhangpackage com.android.settings.intelligence.search;
19d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang
20d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhangimport android.os.Parcel;
21d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhangimport android.os.Parcelable;
22d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang
23d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang/**
24d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang * Utility class to Marshall and Unmarshall the payloads stored in the SQLite Database
25d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang */
26d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhangpublic class ResultPayloadUtils {
27d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang
28d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang    private static final String TAG = "PayloadUtil";
29d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang
30d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang    public static byte[] marshall(ResultPayload payload) {
31d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang        Parcel parcel = Parcel.obtain();
32d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang        payload.writeToParcel(parcel, 0);
33d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang        byte[] bytes = parcel.marshall();
34d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang        parcel.recycle();
35d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang        return bytes;
36d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang    }
37d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang
38d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang    public static <T> T unmarshall(byte[] bytes, Parcelable.Creator<T> creator) {
39d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang        T result;
40d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang        Parcel parcel = unmarshall(bytes);
41d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang        result = creator.createFromParcel(parcel);
42d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang        parcel.recycle();
43d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang        return result;
44d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang    }
45d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang
46d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang    private static Parcel unmarshall(byte[] bytes) {
47d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang        Parcel parcel = Parcel.obtain();
48d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang        parcel.unmarshall(bytes, 0, bytes.length);
49d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang        parcel.setDataPosition(0);
50d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang        return parcel;
51d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang    }
52d0eec4171551f04fec3cfa074b6a46465a7a9219Fan Zhang}
53