package Ġcom . source plusplus . monitor . sky walk ing Ċ Ċ import Ġcom . ap ol log raph ql . apollo . A pol lo Client Ċ import Ġcom . ap ol log raph ql . apollo . api . Input Ċ import Ġcom . ap ol log raph ql . apollo . coroutines . await Ċ import Ġcom . co da h ale . metrics . Metric Registry Ċ import Ġcom . source plusplus . monitor . sky walk ing . model . Get Endpoint Metrics Ċ import Ġcom . source plusplus . monitor . sky walk ing . model . Get Endpoint Tr aces Ċ import Ġcom . source plusplus . monitor . sky walk ing . model . Get Multiple Endpoint Metrics Ċ import Ġio . vertx . core . Vert x Ċ import Ġio . vertx . core . buffer . Buffer Ċ import Ġio . vertx . core . event bus . Message Codec Ċ import Ġmonitor . sky walk ing . protocol . log . Query Logs Query Ċ import Ġmonitor . sky walk ing . protocol . metadata . GetAll Services Query Ċ import Ġmonitor . sky walk ing . protocol . metadata . GetService Instances Query Ċ import Ġmonitor . sky walk ing . protocol . metadata . Search Endpoint Query Ċ import Ġmonitor . sky walk ing . protocol . metrics . Get Linear Int Values Query Ċ import Ġmonitor . sky walk ing . protocol . metrics . Get Multiple Linear Int Values Query Ċ import Ġmonitor . sky walk ing . protocol . trace . Query Basic Tr aces Query Ċ import Ġmonitor . sky walk ing . protocol . trace . Query Trace Query Ċ import Ġmonitor . sky walk ing . protocol . type .* Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . io . IOException Ċ import Ġjava . time . Zone Offset . of Hours Ċ import Ġjava . time . Z onedDateTime Ċ import Ġjava . time . format . DateTime Formatter Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠUsed Ġto Ġcommunicate Ġwith ĠApache ĠSky Walk ing . Ċ Ġ* Ċ Ġ* Ġ@ since Ġ 0 . 1 . 0 Ċ Ġ* Ġ@ author Ġ[ Brand on ĠF erg erson ]( mailto : b fer g erson @ apache . org ) Ċ Ġ*/ Ċ class ĠSky walk ing Client ( ĊĠĠĠ Ġval Ġvert x : ĠVert x , ĊĠĠĠ Ġprivate Ġval Ġap ollo Client : ĠApollo Client , ĊĠĠĠ Ġprivate Ġval Ġtimezone Offset : ĠInt Ġ= Ġ 0 Ċ ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmetric Registry : ĠMetric Registry Ġ= ĠMetric Registry () ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( Sky walk ing Client :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġregister Code cs ( vertx : ĠVert x ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Register ing ĠApache ĠSky Walk ing Ġcodecs ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Registered Map Ġ= Ġvert x . shared Data (). getLocal Map < String , ĠBoolean >(" registered _ code cs ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Registered Map . get OrDefault (" Sky walk ing Client ", Ġfalse )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert x . event Bus (). register Default Codec ( Get Multiple Endpoint Metrics :: class . java , ĠLocal Message Codec ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert x . event Bus (). register Default Codec ( Get Endpoint Tr aces :: class . java , ĠLocal Message Codec ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert x . event Bus (). register Default Codec ( Get Endpoint Metrics :: class . java , ĠLocal Message Codec ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert x . event Bus (). register Default Codec ( GetAll Services Query . Result :: class . java , ĠLocal Message Codec ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert x . event Bus (). register Default Codec ( GetService Instances Query . Result :: class . java , ĠLocal Message Codec ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert x . event Bus (). register Default Codec ( Search Endpoint Query . Result :: class . java , ĠLocal Message Codec ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert x . event Bus (). register Default Codec ( Query Basic Tr aces Query . Result :: class . java , ĠLocal Message Codec ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert x . event Bus (). register Default Codec ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArrayList :: class . java , ĠLocal Message Codec () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ// todo : Ġshould Ġlikely Ġwrap Ġin Ġobject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Registered Map [" Sky walk ing Client "] Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġregister Code cs ( vertx ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġquery Trace Stack ( ĊĠĠĠĠĠĠĠ Ġtrace Id : ĠString , ĊĠĠĠ Ġ): ĠQuery Trace Query . Result ? Ġ{ ĊĠĠĠĠĠĠĠ Ġmetric Registry . timer (" query Trace Stack "). time (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log . is Trace Enabled ) Ġlog . trace (" Query Ġtrace Ġstack Ġrequest . ĠTrace : Ġ{}", Ġtrace Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġap ollo Client . query ( Query Trace Query ( trace Id )). await () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . has Errors ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . errors !!. forEach Ġ{ Ġlog . error ( it . message ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException ( response . errors ! ![ 0 ]. message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log . is Trace Enabled ) Ġlog . trace (" Query Ġtrace Ġstack Ġresponse : Ġ{}", Ġresponse . data !!. result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse . data !!. result ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġquery Basic Tr aces ( request : ĠGet Endpoint Tr aces ): ĠQuery Basic Tr aces Query . Result ? Ġ{ ĊĠĠĠĠĠĠĠ Ġmetric Registry . timer (" query Basic Tr aces "). time (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log . is Trace Enabled ) Ġlog . trace (" Query Ġbasic Ġtraces Ġrequest . ĠRequest : Ġ{}", Ġrequest ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġap ollo Client . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQuery Basic Tr aces Query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTrace Query Condition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Id Ġ= ĠInput . optional ( request . service Id ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice InstanceId Ġ= ĠInput . optional ( request . service InstanceId ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġendpoint Id Ġ= ĠInput . optional ( request . endpoint Id ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġendpoint Name Ġ= ĠInput . optional ( request . endpoint Name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Duration Ġ= ĠInput . optional ( request . zon ed Duration . to Duration ( this )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Order Ġ= Ġrequest . order Type . to Query Order (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace State Ġ= Ġrequest . order Type . to Trace State (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaging Ġ= ĠPagination ( Input . optional ( request . pageNumber ), Ġrequest . pageSize ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). await () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . has Errors ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . errors !!. forEach Ġ{ Ġlog . error ( it . message ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException ( response . errors ! ![ 0 ]. message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log . is Trace Enabled ) Ġlog . trace (" Query Ġbasic Ġtraces Ġresponse : Ġ{}", Ġresponse . data !!. result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse . data !!. result ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġget Endpoint Metrics ( ĊĠĠĠĠĠĠĠ Ġmetric Name : ĠString , ĊĠĠĠĠĠĠĠ Ġendpoint Id : ĠString , ĊĠĠĠĠĠĠĠ Ġduration : ĠDuration ĊĠĠĠ Ġ): ĠGet Linear Int Values Query . Result ? Ġ{ ĊĠĠĠĠĠĠĠ Ġmetric Registry . timer (" get Endpoint Metrics "). time (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log . is Trace Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . trace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Get Ġendpoint Ġmetrics Ġrequest . ĠMetric : Ġ{} Ġ- ĠEndpoint : Ġ{} Ġ- ĠDuration : Ġ{}", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmetric Name , Ġendpoint Id , Ġduration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġap ollo Client . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGet Linear Int Values Query ( Metric Condition ( metric Name , ĠInput . optional ( endpoint Id )), Ġduration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). await () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . has Errors ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . errors !!. forEach Ġ{ Ġlog . error ( it . message ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException ( response . errors ! ![ 0 ]. message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log . is Trace Enabled ) Ġlog . trace (" Get Ġendpoint Ġmetrics Ġresponse : Ġ{}", Ġresponse . data !!. result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse . data !!. result ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġget Multiple Endpoint Metrics ( ĊĠĠĠĠĠĠĠ Ġmetric Name : ĠString , ĊĠĠĠĠĠĠĠ Ġendpoint Id : ĠString , ĊĠĠĠĠĠĠĠ ĠnumOf Linear : ĠInt , ĊĠĠĠĠĠĠĠ Ġduration : ĠDuration ĊĠĠĠ Ġ): ĠList < Get Multiple Linear Int Values Query . Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġmetric Registry . timer (" get Multiple Endpoint Metrics "). time (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log . is Trace Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . trace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Get Ġmultiple Ġendpoint Ġmetrics Ġrequest . ĠMetric : Ġ{} Ġ- ĠEndpoint : Ġ{} Ġ- ĠNumber : Ġ{} Ġ- ĠDuration : Ġ{}", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmetric Name , Ġendpoint Id , ĠnumOf Linear , Ġduration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġap ollo Client . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGet Multiple Linear Int Values Query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMetric Condition ( metric Name , ĠInput . optional ( endpoint Id )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠnumOf Linear , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). await () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . has Errors ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . errors !!. forEach Ġ{ Ġlog . error ( it . message ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException ( response . errors ! ![ 0 ]. message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log . is Trace Enabled ) Ġlog . trace (" Get Ġmultiple Ġendpoint Ġmetrics Ġresponse : Ġ{}", Ġresponse . data !!. result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse . data !!. result ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġsearch Endpoint ( keyword : ĠString , Ġservice Id : ĠString , Ġlimit : ĠInt ): ĠList < Search Endpoint Query . Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġmetric Registry . timer (" search Endpoint "). time (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log . is Trace Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . trace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Search Ġendpoint Ġrequest . ĠKeyword : Ġ{} Ġ- ĠService : Ġ{} Ġ- ĠLimit : Ġ{}", Ġkeyword , Ġservice Id , Ġlimit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġap ollo Client . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Endpoint Query ( keyword , Ġservice Id , Ġlimit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). await () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . has Errors ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . errors !!. forEach Ġ{ Ġlog . error ( it . message ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException ( response . errors ! ![ 0 ]. message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log . is Trace Enabled ) Ġlog . trace (" Search Ġendpoint Ġresponse : Ġ{}", Ġresponse . data !!. result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse . data !!. result ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġquery Logs ( condition : ĠLog Query Condition ): ĠQuery Logs Query . Result ? Ġ{ ĊĠĠĠĠĠĠĠ Ġmetric Registry . timer (" query Logs "). time (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log . is Trace Enabled ) Ġlog . trace (" Query Ġlogs Ġrequest . ĠCondition : Ġ{}", Ġcondition ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġap ollo Client . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQuery Logs Query ( Input . optional ( condition )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). await () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . has Errors ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . errors !!. forEach Ġ{ Ġlog . error ( it . message ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException ( response . errors ! ![ 0 ]. message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log . is Trace Enabled ) Ġlog . trace (" Query Ġlogs Ġresponse : Ġ{}", Ġresponse . data !!. result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse . data !!. result Ġ// todo : Ġchange Ġreturn Ġtype Ġif Ġthis Ġcan Ġnever Ġbe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġget Services ( duration : ĠDuration ): ĠList < GetAll Services Query . Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġmetric Registry . timer (" get Services "). time (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log . is Trace Enabled ) Ġlog . trace (" Get Ġservices Ġrequest . ĠDuration : Ġ{}", Ġduration ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġap ollo Client . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGetAll Services Query ( duration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). await () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . has Errors ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . errors !!. forEach Ġ{ Ġlog . error ( it . message ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException ( response . errors ! ![ 0 ]. message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log . is Trace Enabled ) Ġlog . trace (" Get Ġservices Ġresponse : Ġ{}", Ġresponse . data !!. result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse . data !!. result ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġget Service Instances ( service Id : ĠString , Ġduration : ĠDuration ): ĠList < GetService Instances Query . Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġmetric Registry . timer (" getService Instances "). time (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log . is Trace Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . trace (" Get Ġservice Ġinstances Ġrequest . ĠService : Ġ{} Ġ- ĠDuration : Ġ{}", Ġservice Id , Ġduration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġap ollo Client . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGet Service Instances Query ( service Id , Ġduration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). await () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . has Errors ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . errors !!. forEach Ġ{ Ġlog . error ( it . message ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException ( response . errors ! ![ 0 ]. message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log . is Trace Enabled ) Ġlog . trace (" Get Ġservice Ġinstances : Ġ{}", Ġresponse . data !!. result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse . data !!. result ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Duration ( since : ĠZ onedDateTime , Ġstep : ĠDuration Step ): ĠDuration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Duration ( since , ĠZ onedDateTime . now (), Ġstep ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Duration ( from : ĠZ onedDateTime , Ġto : ĠZ onedDateTime , Ġstep : ĠDuration Step ): ĠDuration Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfrom Date Ġ= Ġfrom . with Zone Same Instant ( of Hours ( timezone Offset )) ĊĠĠĠĠĠĠĠ Ġval Ġto Date Ġ= Ġto . with Zone Same Instant ( of Hours ( timezone Offset )) ĊĠĠĠĠĠĠĠ Ġreturn ĠDuration ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Date . format ( step . dateTime Formatter ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Date . format ( step . dateTime Formatter ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStep . valueOf ( step . name ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠDuration Step ( val ĠdateTime Formatter : ĠDateTime Formatter ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDAY ( DateTime Formatter . of Pattern (" yyyy - MM - dd ")), ĊĠĠĠĠĠĠĠ ĠHO UR ( DateTime Formatter . of Pattern (" yyyy - MM - dd ĠHH ")), ĊĠĠĠĠĠĠĠ ĠMIN UTE ( DateTime Formatter . of Pattern (" yyyy - MM - dd ĠHH mm ")), ĊĠĠĠĠĠĠĠ ĠSE COND ( DateTime Formatter . of Pattern (" yyyy - MM - dd ĠHH mm ss ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUsed Ġto Ġtransmit ĠApache ĠSky Walk ing Ġmessages . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ since Ġ 0 . 1 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠLocal Message Codec < T > Ġ: ĠMessage Codec < T , ĠT > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġencode To Wire ( buffer : ĠBuffer , Ġo : ĠT ): ĠUnit Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" Not Ġsupported Ġyet .") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdecode From Wire ( pos : ĠInt , Ġbuffer : ĠBuffer ): ĠT Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" Not Ġsupported Ġyet .") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtransform ( o : ĠT ): ĠT Ġ= Ġo ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġname (): ĠString Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsystem Codec ID (): ĠByte Ġ= Ġ- 1 ĊĠĠĠ Ġ} Ċ } Ċ