@ file : Suppress (" unused ") Ċ Ċ package Ġcom . e ag les ak ura . fire arm . rpc . service Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġcom . e ag les ak ura . fire arm . rpc . service . internal . Server Connection Impl Ċ import Ġcom . e ag les ak ura . fire arm . rpc . service . rout ers . Client Procedure Router Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ Ċ /** Ċ Ġ* ĠClient Ġto ĠServer Ġconnection Ġfactory . Ċ Ġ* Ċ Ġ* Ġe . g .) Ċ Ġ* Ġval Ġconnection Ġ= ĠProcedure Service ConnectionFactory . connect ( context , Ġcallback , Ġintent ) Ġ{ Ċ Ġ* ĠĠĠĠĠ Ġ// Ġadd Ġoptions . Ċ Ġ* Ġ} Ċ Ġ* Ċ Ġ* Ġconnection . request ("/", ĠBundle ()) ĠĠĠ Ġ// Ġrequest Ġfrom Ġclient , Ġto Ġserver . Ċ Ġ* Ġconnection . disconnect () Ċ Ġ*/ Ċ @ Suppress (" Member Visibility Can Be Private ") Ċ object ĠProcedure Server ConnectionFactory Ġ{ ĊĊĠĠĠ Ġclass ĠBuilder ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcontext : ĠContext , ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġservice Intent : ĠIntent , ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcallback : ĠProcedure Client Callback ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠOptional . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠConnect Ġconnection H ings . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġoptions : ĠBundle ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġconnect (): ĠProcedure Server Connection Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= ĠServer Connection Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Intent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . connect ( options Ġ?: ĠBundle ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConnect Ġto Ġserver Ġservice . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġservice Ġnot Ġcreated , Ġthen Ġstart Ġservice . ĊĠĠĠĠ Ġ* ĠCA UTION !! , Ġthis Ġconnection Ġis ĠNot Ġtwo - way Ġrpc . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġconnect ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġservice Intent : ĠIntent , ĊĠĠĠĠĠĠĠ Ġblock : Ġ( builder : ĠBuilder ) Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġ): ĠProcedure Server Connection Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġconnect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠProcedure Client Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexecute On Client ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection : ĠProcedure Server Connection , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments : ĠBundle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠBundle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Intent , Ġblock ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConnect Ġto Ġserver Ġservice . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġservice Ġnot Ġcreated , Ġthen Ġstart Ġservice . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġconnect ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġrouter : ĠClient Procedure Router , ĊĠĠĠĠĠĠĠ Ġservice Intent : ĠIntent , ĊĠĠĠĠĠĠĠ Ġblock : Ġ( builder : ĠBuilder ) Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġ): ĠProcedure Server Connection Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġconnect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠProcedure Client Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexecute On Client ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection : ĠProcedure Server Connection , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments : ĠBundle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠBundle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġrouter . execute On Client ( connection , Ġpath , Ġarguments ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Intent , Ġblock ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConnect Ġto Ġserver Ġservice . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġservice Ġnot Ġcreated , Ġthen Ġstart Ġservice . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġconnect ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcallback : ĠProcedure Client Callback , ĊĠĠĠĠĠĠĠ Ġservice Intent : ĠIntent , ĊĠĠĠĠĠĠĠ Ġblock : Ġ( builder : ĠBuilder ) Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġ): ĠProcedure Server Connection Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠBuilder ( context , Ġservice Intent , Ġcallback ). also ( block ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . connect () ĊĠĠĠ Ġ} Ċ } Ċ