package Ġorg . gob lin framework . remote . client . invocation . endpoint Ċ Ċ import Ġorg . gob lin framework . api . annotation . Singleton Ċ import Ġorg . gob lin framework . core . service . G ob lin Managed Bean Ċ import Ġorg . gob lin framework . core . service . G ob lin ManagedObject Ċ import Ġorg . gob lin framework . remote . client . dispatcher . response . Remote ClientResponse Dispatcher Ċ import Ġorg . gob lin framework . remote . client . invocation . Remote Client Endpoint MX Bean Ċ import Ġorg . gob lin framework . remote . client . invocation . Remote Client Invocation Ċ import Ġorg . gob lin framework . remote . client . invocation . Rpc Client Endpoint Ċ import Ġorg . gob lin framework . rpc . filter . Rpc FilterChain Ċ import Ġjava . util . concurrent . atomic . Long Ad der Ċ Ċ @ Singleton Ċ @ G ob lin Managed Bean (" Remote Client ") Ċ class ĠRpc Client Invocation Endpoint Ġprivate Ġconstructor () ĊĠ Ġ: ĠG ob lin ManagedObject (), ĠRpc Client Endpoint , ĠRemote Client Endpoint MX Bean Ġ{ ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġ@ Jvm Field Ġval ĠINSTANCE Ġ= ĠRpc Client Invocation Endpoint () ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġexecution Count Ġ= ĠLong Ad der () ĊĊĠ Ġoverride Ġfun Ġfilter ( invocation : ĠRemote Client Invocation , Ġchain : ĠRpc FilterChain < Remote Client Invocation >) Ġ{ ĊĠĠĠ Ġif Ġ( invocation . dispatch All ()) Ġ{ ĊĠĠĠĠĠ Ġinvocation . routes . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroute Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġinvocation . flight . send Request ( route ) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġroute . release () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġval Ġroute Ġ= Ġinvocation . routes . first () ĊĠĠĠĠĠ Ġval Ġflight Future Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġinvocation . flight . send Request ( route ) ĊĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠ Ġroute . release () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( invocation . no Response Wait ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġinvocation . complete ( null ) ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġinvocation . instruction . stop () ĊĠĠĠĠĠĠĠ Ġflight Future . addListener Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . get () ĊĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . transport Error Ġ= Ġex ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ ĠRemote ClientResponse Dispatcher . INSTANCE . on Response ( invocation ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġ" Remote Client Invocation Endpoint " ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Execution Count (): ĠLong Ġ{ ĊĠĠĠ Ġreturn Ġexecution Count . sum () ĊĠ Ġ} Ċ }