@ file : Suppress (" Member Visibility Can Private ") Ċ Ċ package Ġactor . proto . remote Ċ Ċ import Ġcom . google . protobuf . ByteString Ċ import Ġcom . google . protobuf . Descriptors Ċ import Ġcom . google . protobuf . Message Ċ import Ġcom . google . protobuf . Parser Ċ import Ġjava . lang . reflect . Field ĊĊ Ċ object ĠSerialization Ġ{ ĊĠĠĠ Ġvar Ġdefault Serializer Id : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval Ġparser Lookup : ĠHashMap < String , ĠParser < Message >> Ġ= ĠHashMap () ĊĠĠĠ Ġprivate Ġval ĠSerial izers : ĠMutable List < Serializer > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġprivate Ġval ĠProtobuf Serializer : ĠProtobuf Serializer Ġ= ĠProtobuf Serializer () ĊĠĠĠ Ġprivate Ġval ĠJsonSerializer : ĠJsonSerializer Ġ= ĠJsonSerializer () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġregister FileDescriptor ( actor . proto . Protos . get Descriptor ()) ĊĠĠĠĠĠĠĠ Ġregister FileDescriptor ( Remote Protos . get Descriptor ()) ĊĠĠĠĠĠĠĠ Ġregister Serializer ( Protobuf Serializer , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġregister Serializer ( Json Serializer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġregister Serializer ( serializer : ĠSerializer , Ġmake Default : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSerial izers . add ( serializer ) ĊĠĠĠĠĠĠĠ Ġif Ġ( make Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Serializer Id Ġ= ĠSerial izers . count () Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġregister FileDescriptor ( fd : ĠDes cript ors . FileDescriptor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// TODO : Ġmake Ġthis Ġnot Ġhor rible ĊĠĠĠĠĠĠĠ Ġfor Ġ( msg Ġin Ġfd . message Types ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġouter Ġ= Ġif Ġ( fd . options . java OuterClass name Ġ== Ġ"") Ġfd . name . split ('. ')[ 0 ] Ġelse Ġfd . options . java OuterClass name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠclassName Ġ= Ġ"${ fd . options . java Package }. $ outer $ ${ msg . name }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclazz Ġ= ĠThread . currentThread (). context ClassLoader . load Class ( className ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparser Field : ĠField Ġ= Ġclazz . getDeclared Field (" PARSER ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparser Field . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparser Ġ= Ġparser Field . get ( null ) Ġas ĠParser < Message > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparser Lookup . put ( msg . fullName , Ġparser ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġserialize ( message : ĠAny , Ġserializer Id : ĠInt ): ĠByte String Ġ= ĠSerial izers [ serializer Id ]. serialize ( message ) ĊĠĠĠ Ġfun Ġget TypeName ( message : ĠAny , Ġserializer Id : ĠInt ): ĠString Ġ= ĠSerial izers [ serializer Id ]. getType Name ( message ) ĊĠĠĠ Ġfun Ġdeserialize ( typeName : ĠString , Ġbytes : ĠByte String , Ġserializer Id : ĠInt ): ĠAny Ġ= ĠSerial izers [ serializer Id ]. deserialize ( bytes , ĠtypeName ) ĊĠĠĠ Ġ@ Suppress (" UNUSED _ PARAMETER ") ĊĠĠĠ Ġfun ĠgetMessage Builder ( typeName : ĠAny ): ĠMessage . Builder ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetMessage Parser ( typeName : ĠString ): ĠParser < Message > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparser Lookup [ typeName ] !! ĊĠĠĠ Ġ} Ċ } ĊĊ