package Ġcom . sd . lib . stream Ċ Ċ import Ġandroid . util . Log Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ Ċ /** Ċ Ġ* Ġæµ ģ å¯¹è±¡ æĮģ æľī èĢħ ï¼Į ä¿ĿåŃĺ æµģ æİ¥åı£ æĺłå°Ħ çļĦ æµģ å¯¹è±¡ åĪĹè¡¨ Ċ Ġ*/ Ċ internal Ġclass ĠStream Holder Ġ{ ĊĠĠĠ Ġ/** Ġæµ ģ æİ¥åı£ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġ_ class : ĠClass < out ĠF Stream > ĊĊĠĠĠ Ġ/** Ġæµ ģ å¯¹è±¡ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġ_ stream Holder : ĠMutable Set < F Stream > Ġ= ĠLinked HashSet () ĊĊĠĠĠ Ġ/** Ġè®¾ç½® äºĨ ä¼ĺåħĪ çº§ çļĦ æµģ å¯¹è±¡ Ġ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġ_ priority Stream Holder : ĠMutable Map < F Stream , ĠInt > Ġ= ĠConcurrent HashMap () ĊĊĠĠĠ Ġ/** Ġæĺ¯åĲ¦ éľĢè¦ģ æİĴåºı Ġ Ġ*/ ĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġprivate Ġvar Ġ_ is Need Sort Ġ= Ġfalse ĊĊĠĠĠ Ġ/** Ġæµ ģ å¯¹è±¡ æķ°éĩı Ġ*/ ĊĠĠĠ Ġval Ġsize Ġget () Ġ= Ġ_ stream Holder . size ĊĊĠĠĠ Ġconstructor ( clazz : ĠClass < out ĠF Stream >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ class Ġ= Ġclazz ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ·»åĬł æµģ å¯¹è±¡ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġadd ( stream : ĠF Stream ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġ_ stream Holder . add ( stream ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(_ priority Stream Holder . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ æľī æµģ å¯¹è±¡ è®¾ç½® äºĨ ä¼ĺåħĪ çº§ ï¼Į åĪĻ æ·»åĬł æĸ° æµģ å¯¹è±¡ çļĦæĹ¶åĢĻ æłĩè®° ä¸º éľĢè¦ģ éĩįæĸ° æİĴåºı ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ is Need Sort Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç§»éĻ¤ æµģ å¯¹è±¡ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġremove ( stream : ĠF Stream ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġ_ stream Holder . remove ( stream ) ĊĠĠĠĠĠĠĠ Ġ_ priority Stream Holder . remove ( stream ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè¿ĶåĽŀ æµģ éĽĨåĲĪ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġto Collection (): ĠArray < F Stream > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ(_ is Need Sort ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsort () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ stream Holder . to Typed Array () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æİĴåºı ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsort (): ĠArray < F Stream > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarray Ġ= Ġ_ stream Holder . to Typed Array () ĊĠĠĠĠĠĠĠ Ġif Ġ( array . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æİĴåºı ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray . sort With ( Stream Priority Comparator Desc ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠæĬ Ĭ æİĴåºı åĲİçļĦ å¯¹è±¡ ä¿ĿåŃĺ åĪ° å®¹åĻ¨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ stream Holder . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ stream Holder . addAll ( array ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ_ is Need Sort Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( F Stream Manager . isDebug ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( F Stream :: class . java . simple Name , Ġ" sort Ġstream Ġfor Ġclass :${ _ class . name }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġarray ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ éĢļçŁ¥ ä¼ĺåħĪ çº§ åıĺåĮĸ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġnotify Priority Changed ( priority : ĠInt , Ġstream : ĠF Stream , Ġclazz : ĠClass < out ĠF Stream >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(!_ stream Holder . contains ( stream )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( priority Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ priority Stream Holder . remove ( stream ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ priority Stream Holder [ stream ] Ġ= Ġpriority ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ_ is Need Sort Ġ= Ġ_ priority Stream Holder . isNotEmpty () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( F Stream Manager . isDebug ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF Stream :: class . java . simple Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" notify Priority Changed Ġpriority :${ priority } Ġclazz :${ clazz . name } Ġpriority Stream Holder Ġsize :${ _ priority Stream Holder . size } Ġstream :${ stream }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠStream Priority Comparator Desc Ġ: ĠComparator < F Stream > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcompare ( o 1 : ĠF Stream , Ġo 2 : ĠF Stream ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġo 1 Connection Ġ= ĠF Stream Manager . getConnection ( o 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġo 2 Connection Ġ= ĠF Stream Manager . getConnection ( o 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( o 1 Connection Ġ!= Ġnull Ġ&& Ġo 2 Connection Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo 2 Connection . get Priority (_ class ) Ġ- Ġo 1 Connection . get Priority (_ class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }