package Ġcom . github . kor ni lo va _ l . fl ame graph . plugin . server . tree _ request _ handlers . tree Ċ Ċ import Ġcom . github . kor ni lo va _ l . fl ame graph . plugin . server . Profiler HttpRequest Handler . getParameter Ċ import Ġcom . github . kor ni lo va _ l . fl ame graph . plugin . server . trees . Tree Manager Ċ import Ġcom . github . kor ni lo va _ l . fl ame graph . plugin . server . trees . Tree Manager . Tree Type Ċ import Ġcom . github . kor ni lo va _ l . fl ame graph . plugin . server . trees . Trees Set . Companion . getMax Depth Re cursively Ċ import Ġcom . github . kor ni lo va _ l . fl ame graph . plugin . server . trees . util . Trees Util Ċ import Ġcom . github . kor ni lo va _ l . fl ame graph . proto . Tree Protos . Tree Ċ import Ġcom . intellij . openapi . diagnostic . Logger Ċ import Ġio . netty . channel . Channel HandlerContext Ċ import Ġio . netty . handler . codec . http . QueryString Decoder Ċ import Ġjava . io . File Ċ Ċ abstract Ġclass ĠAcc umulative Tree RequestHandler Ġinternal Ġconstructor ( url Decoder : ĠQuery String Decoder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠ Ġcontext : ĠChannel HandlerContext ) Ġ: ĠTree RequestHandler ( url Decoder , Ġcontext ) Ġ{ ĊĠĠĠ Ġprivate Ġval ĠLOG Ġ= ĠLogger . getInstance ( Acc umulative Tree RequestHandler :: class . java ) ĊĠĠĠ Ġabstract Ġval Ġtype : ĠTree Type ĊĊĠĠĠ Ġoverride Ġfun Ġget Tree ( log File : ĠFile ): ĠTree ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠmethodName Ġ= Ġget Parameter ( url Decoder , Ġ" method ") ĊĠĠĠĠĠĠĠ Ġval ĠclassName Ġ= Ġget Parameter ( url Decoder , Ġ" class ") ĊĠĠĠĠĠĠĠ Ġval Ġdesc Ġ= Ġget Parameter ( url Decoder , Ġ" desc ") ĊĠĠĠĠĠĠĠ Ġval Ġtree Ġ= Ġif Ġ( methodName Ġ!= Ġnull Ġ&& ĠclassName Ġ!= Ġnull Ġ&& Ġdesc Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTree Manager . get Tree ( log File , Ġtype , ĠclassName , ĠmethodName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdesc , Ġfilter ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTree Manager . get Tree ( log File , Ġtype , Ġfilter ) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġurl Decoder . parameters ()[" path "] Ġ?: Ġreturn Ġtree ĊĠĠĠĠĠĠĠ Ġreturn Ġget Sub Tree ( tree , Ġpath . map Ġ{ ĠInteger . parseInt ( it ) Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAt Ġone Ġmoment Ġthere Ġare Ġonly Ġ[ maximum Nodes Count ] Ġvisible Ġnodes . ĊĠĠĠĠ Ġ* ĠWhen Ġnode Ġis Ġz oo med , Ġclient Ġsend Ġrequest Ġto Ġserver Ġand Ġspecifies Ġpath Ġto Ġthe Ġnode . ĊĠĠĠĠ Ġ* Ġ@ param Ġpath Ġto Ġfirst Ġnode Ġof Ġsubtree . ĠEach Ġnumber Ġin Ġpath Ġ- Ġindex Ġof Ġchild ĊĠĠĠĠ Ġ* Ġ@ return Ġsubtree Ġthat Ġcontains Ġless Ġthan Ġ[ maximum Nodes Count ] ĊĠĠĠĠ Ġ* Ġ( Note : Ġit Ġwould Ġbe Ġmore Ġconvenient Ġto Ġreturn Ġa Ġsubtree Ġthat Ġcontains Ġmore Ġthan Ġ[ maximum Nodes Count ], Ġso Ġit Ġwill Ġbe ĊĠĠĠĠ Ġ* Ġcut Ġin Ġ[ Tree RequestHandler ]. ĊĠĠĠĠ Ġ* ĠBut Ġit Ġmeans Ġthat Ġthere Ġwill Ġbe Ġa Ġduplicate Ġof Ġtree , Ġthis Ġduplicate Ġmight Ġbe Ġreally Ġlarge ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Sub Tree ( tree : ĠTree , Ġpath : ĠList < Int >): ĠTree ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠcurrentNode Ġ= Ġtree . base Node ĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġpath ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentNode Ġ= ĠcurrentNode . get Nodes ( index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsub Tree Ġ= ĠTree . newBuilder () ĊĠĠĠĠĠĠĠ Ġif Ġ( tree . tree Info . nodes Count Ġ> Ġmaximum Nodes Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Accepted Layer Ġ= ĠgetLast Accepted Layer Index ( currentNode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase Ġ= ĠTree . Node . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setWidth ( currentNode . width ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Offset ( currentNode . offset ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set NodeInfo ( currentNode . node Info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub Tree . base Node Builder . add Nodes ( base ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadded Base Ġ= Ġsub Tree . base Node Builder . get Nodes Builder ( sub Tree . base Node Builder . nodes Builder List . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcut Tree ( currentNode , Ġadded Base , Ġ 1 , Ġlast Accepted Layer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub Tree . visible Depth Ġ= Ġlast Accepted Layer Ġ+ Ġ 1 Ġ// Ġ+ Ġ 1 Ġbecause ĠcurrentNode Ġwas Ġnot Ġcounted ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . error (" There Ġis Ġno Ġneed Ġto Ġsend Ġsub - tree Ġrequest Ġif Ġtree Ġcontains Ġless Ġthan Ġ$ maximum Nodes Count Ġnodes ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub Tree . base Node Builder . add Nodes ( currentNode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub Tree . visible Depth Ġ= ĠgetMax Depth Re cursively ( sub Tree . base Node Builder , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsub Tree . depth Ġ= ĠgetMax Depth Re cursively ( currentNode , Ġ 1 ) Ġ// Ġfirst Ġelement Ġin Ġpath Ġch oo ses Ġone Ġof Ġtrees Ġof Ġbase Ġnode ĊĊĠĠĠĠĠĠĠ ĠTre es Util . set Nodes Offset Re cursively ( sub Tree . base Node Builder , Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠTre es Util . set Tree Width ( sub Tree ) ĊĠĠĠĠĠĠĠ ĠTre es Util . set Nodes Count ( sub Tree ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsub Tree . build () ĊĠĠĠ Ġ} Ċ } Ċ