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