/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 Ġ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 . Ċ Ġ*/ Ċ Ċ package Ġandroidx . datastore . protos Ċ Ċ import Ġandroidx . datastore . core . Cor ruption Exception Ċ import Ġandroidx . datastore . core . Serializer Ċ import Ġcom . google . protobuf . ExtensionRegistryLite Ċ import Ġcom . google . protobuf . InvalidProtocolBufferException Ċ import Ġcom . google . protobuf . Message Lite Ċ import Ġjava . io . InputStream Ċ import Ġjava . io . OutputStream Ċ Ċ /** ĠSerializer Ġfor Ġusing ĠData Store Ġwith Ġprotos . Ġ*/ Ċ internal Ġclass ĠProto Serializer < T Ġ: ĠMessage Lite >( ĊĠĠĠ Ġ/** ĠThe Ġdefault Ġproto Ġof Ġthis Ġtype , Ġobtained Ġvia Ġ{@ code ĠT . getDefaultInstance ()} Ġ*/ ĊĠĠĠ Ġoverride Ġval ĠdefaultValue : ĠT , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠSet Ġthe ĠextensionRegistry Lite Ġto Ġuse Ġwhen Ġde serializing ĠT . ĠIf Ġno Ġextension Ġregistry Ġis ĊĠĠĠĠ Ġ* Ġ Ġnecessary , Ġuse Ġ{@ code ĠExtension Registry Lite . get Empty Registry ()}. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval ĠextensionRegistry Lite : ĠExtension Registry Lite Ċ ) Ġ: ĠSerializer < T > Ġ{ ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġoverride Ġfun Ġread From ( input : ĠInputStream ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠdefaultValue . parser ForType . parseFrom ( input , ĠextensionRegistry Lite ) Ġas ĠT ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( invalid ProtocolBufferException : ĠInvalid ProtocolBufferException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCor ruption Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Cannot Ġread Ġproto .", Ġinvalid ProtocolBufferException ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠwriteTo ( t : ĠT , Ġoutput : ĠOutputStream ) Ġ{ ĊĠĠĠĠĠĠĠ Ġt . writeTo ( output ) ĊĠĠĠ Ġ} Ċ }