package Ġorg . gob lin framework . remote . client . invocation . filter Ċ Ċ import Ġio . netty . buffer . Byte Buf Allocator Ċ import Ġio . netty . buffer . Byte Buf OutputStream Ċ import Ġio . netty . buffer . Byte Buf Util Ċ import Ġio . netty . util . Reference Count Util Ċ import Ġorg . gob lin framework . api . annotation . Singleton Ċ import Ġorg . gob lin framework . api . core . Serializer Mode Ċ import Ġorg . gob lin framework . core . mapper . Json Mapper Ċ import Ġorg . gob lin framework . remote . client . invocation . Remote Client Invocation Ċ import Ġorg . gob lin framework . remote . client . module . exception . Client Encode RequestException Ċ import Ġorg . gob lin framework . remote . client . module . runtime . Remote Client Trans coder Manager Ċ import Ġorg . gob lin framework . rpc . filter . Rpc FilterChain Ċ import Ġorg . gob lin framework . rpc . protocol . Rpc Request Ċ Ċ @ Singleton Ċ class ĠEncode Request Filter Ġprivate Ġconstructor () Ġ: ĠAbstract Internal Filter () Ġ{ ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġ@ Jvm Field Ġval ĠINSTANCE Ġ= ĠEncode Request Filter () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġdo Filter ( invocation : ĠRemote Client Invocation , Ġchain : ĠRpc FilterChain < Remote Client Invocation >) Ġ{ ĊĠĠĠ Ġval Ġrequest Ġ= Ġinvocation . create Request () ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġinvocation . encoded Request Ġ= Ġencode Request ( invocation . encoder (), Ġrequest ) ĊĠĠĠ Ġ} Ġcatch Ġ( ex : ĠThrowable ) Ġ{ ĊĠĠĠĠĠ Ġlogger . error ("{ CLIENT _ ENCODE _ REQUEST _ ERROR } Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠ Ġ" Exception Ġraised Ġwhen Ġencoding Ġrequest Ġ[ service ={}, encoder ={} ]", ĊĠĠĠĠĠĠĠĠĠ Ġinvocation . service Id . as Text (), Ġinvocation . encoder (), Ġex ) ĊĠĠĠĠĠ Ġinvocation . complete ( null , ĠClient Encode RequestException ( ex )) ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġchain . filter ( invocation ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġencode Request ( encoder : ĠSerializer Mode ?, Ġrequest : ĠRpc Request ): ĠByteArray Ġ{ ĊĠĠĠ Ġencoder ?. run Ġ{ ĊĠĠĠĠĠ Ġval Ġtrans coder Ġ= ĠRemote Client Trans coder Manager . INSTANCE . get Trans coder ( this ) ĊĠĠĠĠĠ Ġval Ġbuf Ġ= ĠByte Buf Allocator . DEFAULT . buffer () ĊĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠByte Buf OutputStream ( buf ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġtrans coder . encode ( it , Ġrequest ) ĊĠĠĠĠĠĠĠĠĠ Ġit . flush () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠByte Buf Util . getBytes ( buf ) ĊĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠ ĠReference Count Util . release ( buf ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġ?: Ġkotlin . run Ġ{ ĊĠĠĠĠĠ Ġreturn ĠJson Mapper . toJson ( request ). toByteArray ( Charsets . UTF _ 8 ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }