/* Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ* Ċ Ġ* ĠThe ĠOpen Search ĠContributors Ġrequire Ġcontributions Ġmade Ġto Ċ Ġ* Ġthis Ġfile Ġbe Ġlicensed Ġunder Ġthe ĠApache - 2 . 0 Ġlicense Ġor Ġa Ċ Ġ* Ġcompatible Ġopen Ġsource Ġlicense . Ċ Ġ* Ċ Ġ* ĠMod ifications ĠCopyright ĠOpen Search ĠContributors . ĠSee Ċ Ġ* ĠGitHub Ġhistory Ġfor Ġdetails . Ċ Ġ*/ Ċ Ċ package Ġorg . opense arch . replication . action . stats Ċ Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġorg . apache . logging . log 4 j . Log Manager Ċ import Ġorg . opense arch . action . Failed Node Exception Ċ import Ġorg . opense arch . action . support . Action Filters Ċ import Ġorg . opense arch . action . support . nodes . Transport Nodes Action Ċ import Ġorg . opense arch . client . node . Node Client Ċ import Ġorg . opense arch . cluster . service . Cluster Service Ċ import Ġorg . opense arch . common . inject . Inject Ċ import Ġorg . opense arch . common . io . stream . Stream Input Ċ import Ġorg . opense arch . replication . metadata . state . Replication State Metadata Ċ import Ġorg . opense arch . replication . seq no . Remote Cluster Stats Ċ import Ġorg . opense arch . replication . task . shard . Follower Cluster Stats Ċ import Ġorg . opense arch . thread pool . ThreadPool Ċ import Ġorg . opense arch . transport . Transport Service Ċ Ċ class ĠTransport Follower Stats Action Ġ@ Inject Ġconstructor ( transport Service : ĠTransport Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcluster Service : ĠCluster Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthread Pool : ĠThreadPool , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Filters : ĠAction Filters , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġremote Stats : ĠRemote Cluster Stats , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġclient : ĠNode Client , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġfollow er Stats : ĠFollow er Cluster Stats ) Ġ: ĊĠĠĠĠĠĠĠ ĠTransport Nodes Action < Follower Stats Request , ĠFollow er Stats Response , ĠNode Stats Request , ĠFollow er Node Stats Response >( Follower Stats Action . NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġthread Pool , Ġcluster Service , Ġtransport Service , Ġ Ġaction Filters , Ġ:: Follower Stats Request , Ġ Ġ:: Node Stats Request , ĠThreadPool . Names . MANAGE MENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFollow er Node Stats Response :: class . java ), ĠCor outine Scope Ġby ĠGlobal Scope Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLog Manager . getLogger ( Transport Follower Stats Action :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠnewNode Request ( request : ĠFollow er Stats Request ): ĠNode Stats Request Ġ{ ĊĠĠĠĠĠĠ Ġreturn ĠNode Stats Request () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠnewNode Response ( input : ĠStream Input ): ĠFollow er Node Stats Response Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFollow er Node Stats Response ( input ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnew Response ( request : ĠFollow er Stats Request ?, Ġresponses : ĠMutable List < Follower Node Stats Response > ?, Ġfailures : ĠMutable List < Failed Node Exception >? ): ĠFollow er Stats Response Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmetadata Ġ= Ġcluster Service . state (). metadata (). custom ( Replication State Metadata . NAME ) Ġ?: ĠRep lication State Metadata . EMPTY ĊĠĠĠĠĠĠĠ Ġreturn ĠFollow er Stats Response ( cluster Service . cluster Name , Ġresponses , Ġfailures , Ġmetadata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnode Operation ( node Stat Request : ĠNode Stats Request ?): ĠFollow er Node Stats Response Ġ{ ĊĠĠĠĠĠĠ Ġreturn ĠFollow er Node Stats Response ( this . cluster Service . local Node (), Ġfollow er Stats . stats ) ĊĠĠĠ Ġ} Ċ } Ċ