package Ġorg . she ed on . mqtt . internal . connection . respons ibility Ċ Ċ import Ġorg . she ed on . mqtt . internal . connection . Plan Ċ import Ġorg . she ed on . mqtt . internal . connection . Real Observable Ċ import Ġorg . she ed on . mqtt . internal . connection . Real Plan Ċ import Ġorg . she ed on . mqtt . utils . Logger Ċ Ċ /** Ċ Ġ* Ġ çĽĳåĲ¬ èģĮ è´£ çİ¯ èĬĤ Ġplan Ċ Ġ* Ġ@ Author : Ġshe ed on Ċ Ġ* Ġ@ Email : Ġshe ed ons un @ 1 6 3 . com Ċ Ġ* Ġ@ Date : Ġ 2 0 2 2 / 4 / 4 Ġ 1 2 : 0 2 Ġä¸Ĭ åįĪ Ċ Ġ*/ Ċ class ĠListen Plan ( ĊĠĠĠ Ġcall : ĠReal Observable , ĊĠĠĠ Ġnext Plan : ĠPlan ? Ċ ) Ġ: ĠReal Plan ( call , Ġnext Plan ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġexecuted Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġcanceled Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġpublish Ids Ġ= ĠArrayList < Long >() ĊĊĠĠĠ Ġoverride Ġfun Ġproceed () Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck ( call Ġis ĠReal Observable ) Ġ{ Ġ" call Ġmust ĠReal Observable Ġin ĠListen Plan " Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( call . original Request Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproceed Request ( call ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( call . original Subscribe Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproceed Subscribe ( call ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( call . is Canceled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġun Bind () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġproceed Request ( call : ĠReal Observable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( call . is Canceled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . info (" Dispatcher ", Ġ" listen Plan Ġto Ġcancel Ġproceed Ġby Ġ${ call . original Request }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġcall . original Request ĊĠĠĠĠĠĠĠ ĠLogger . info (" Dispatcher ", Ġ" listen Plan Ġto Ġproceed Ġby Ġ$ request ") ĊĊĊĠĠĠĠĠĠĠ Ġval Ġdispatcher Ġ= Ġcall . dispatcher ĊĠĠĠĠĠĠĠ Ġval Ġrelation Ġ= Ġrequest ?. relation ĊĠĠĠĠĠĠĠ Ġ// ĠéľĢè¦ģ æľī ç»ĳå®ļ åĨħå®¹ ĊĠĠĠĠĠĠĠ Ġif Ġ( relation ?. keyword . isNull OrEmpty () Ġ&& Ġrelation ?. topics ?. topic . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" request 's Ġrelation Ġbind Ġtopic Ġor Ġkeyword Ġis Ġnull Ġby Ġ$ request " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġæ·»åĬł ç»ĳå®ļ ĊĠĠĠĠĠĠĠ Ġval Ġcallback Ġ= Ġcall . back Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġ// Ġ æľ¬åľ° åĪĨ åıĳ äºĭä»¶ æ±ł ä¸Ń è®¢ éĺħ åĪĨ åıĳ çļĦ ç»ĳå®ļ è¡Įä¸º ĊĠĠĠĠĠĠĠ Ġval Ġbind Handler Ġ= Ġdispatcher . bind Handler () ĊĠĠĠĠĠĠĠ Ġval Ġids Ġ= Ġbind Handler . subscribe ( call , Ġcallback ) ĊĠĠĠĠĠĠĠ Ġpublish Ids . addAll ( ids ) ĊĠĠĠĠĠĠĠ Ġexecuted Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġproceed Subscribe ( call : ĠReal Observable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( call . is Canceled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . info (" Dispatcher ", Ġ" listen Plan Ġto Ġcancel Ġproceed Ġby Ġ${ call . original Subscribe }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsubscribe Ġ= Ġcall . original Subscribe ĊĠĠĠĠĠĠĠ ĠLogger . info (" Dispatcher ", Ġ" listen Plan Ġto Ġproceed Ġby Ġ$ subscribe ") ĊĠĠĠĠĠĠĠ Ġval Ġdispatcher Ġ= Ġcall . dispatcher ĊĠĠĠĠĠĠĠ Ġval Ġrelations Ġ= Ġsubscribe ?. relations ĊĊĠĠĠĠĠĠĠ Ġ// Ġ æł¸ å®ŀ éľĢè¦ģ æľī ç»ĳå®ļ åĨħå®¹ ĊĠĠĠĠĠĠĠ Ġif Ġ( relations . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" request 's Ġrelations Ġis Ġnull Ġby Ġ$ subscribe " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġæ·»åĬł ç»ĳå®ļ ĊĠĠĠĠĠĠĠ Ġval Ġcallback Ġ= Ġcall . back Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġ// Ġ æľ¬åľ° åĪĨ åıĳ äºĭä»¶ æ±ł ä¸Ń è®¢ éĺħ åĪĨ åıĳ çļĦ ç»ĳå®ļ è¡Įä¸º ĊĠĠĠĠĠĠĠ Ġval Ġbind Handler Ġ= Ġdispatcher . bind Handler () ĊĠĠĠĠĠĠĠ Ġval Ġids Ġ= Ġbind Handler . subscribe ( call , Ġcallback ) ĊĠĠĠĠĠĠĠ Ġpublish Ids . addAll ( ids ) ĊĠĠĠĠĠĠĠ Ġexecuted Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcancel () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( executed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġun Bind () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è§£ éĻ¤ ç»ĳå®ļ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġun Bind () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( call Ġ! is ĠReal Observable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( call . back Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( c anceled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcanceled Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġval Ġdispatcher Ġ= Ġcall . dispatcher ĊĠĠĠĠĠĠĠ Ġval Ġbind Handler Ġ= Ġdispatcher . bind Handler () ĊĠĠĠĠĠĠĠ Ġbind Handler . unsubscribe (* publish Ids . to Long Array ()) ĊĠĠĠ Ġ} Ċ Ċ }