/** Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠSK ĠTele com ĠCo ., ĠLtd . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp : www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . sk t . n ugu . sdk . client . port . transport . grpc 2 Ċ Ċ import Ġcom . sk t . n ugu . sdk . core . interfaces . connection . Connection Status Listener . Status Ċ import Ġcom . sk t . n ugu . sdk . core . interfaces . connection . Connection Status Listener . Changed Reason Ċ import Ġcom . sk t . n ugu . sdk . core . utils . Logger Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠClass Ġto Ġmanage Ġthe Ġtransport Ġstate . Ċ Ġ*/ Ċ internal Ġclass ĠTransport State Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Transport State " ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġstate Map Ġ= ĠEnum Map < Detailed State , ĠStatus >( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD eta iled State :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom Detailed State ( detailed State : ĠD eta iled State ) Ġ: ĠStatus { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstate Map [ detailed State ] Ġ?: ĠStatus . DIS CONNECTED ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEnum Ġto ĠConnection ĠD eta iled ĠState Ġof ĠTransport ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġenum Ġclass ĠD eta iled State Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĠReady Ġto Ġstart Ġdata Ġconnection Ġsetup . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ ĠID LE , ĊĠĠĠĠĠĠĠ Ġ/** ĠThe Ġconnection Ġstate Ġis Ġconnecting . Ġ*/ ĊĠĠĠĠĠĠĠ ĠCONNECT ING , ĊĠĠĠĠĠĠĠ Ġ/** ĠA waiting Ġresponse Ġfrom Ġregistry Ġserver Ġin Ġorder Ġto Ġpolicy Ġinformation . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ ĠCONNECT ING _ REGISTRY , ĊĠĠĠĠĠĠĠ Ġ/** ĠConnect ing Ġto Ġdevice gateway Ġ*/ ĊĠĠĠĠĠĠĠ ĠCONNECT ING _ DEVICE GATE WAY , ĊĠĠĠĠĠĠĠ Ġ/** ĠThe Ġconnection Ġstate Ġis Ġreconnect ing . Ġ**/ ĊĠĠĠĠĠĠĠ ĠRE CONNECT ING , ĊĠĠĠĠĠĠĠ Ġ/** ĠHand off Ġthe Ġdevice gateway Ġ**/ ĊĠĠĠĠĠĠĠ ĠHAN DO FF , ĊĠĠĠĠĠĠĠ Ġ/** ĠConnected Ġto Ġdevice gateway Ġ*/ ĊĠĠĠĠĠĠĠ ĠCONNECT ED , ĊĠĠĠĠĠĠĠ Ġ/** Ġperforming Ġdisconnect Ġ*/ ĊĠĠĠĠĠĠĠ ĠDIS CONNECT ING , ĊĠĠĠĠĠĠĠ Ġ/** ĠThe Ġconnection Ġstate Ġis Ġdisconnected . Ġ*/ ĊĠĠĠĠĠĠĠ ĠDIS CONNECTED , ĊĠĠĠĠĠĠĠ Ġ/** ĠAttempt Ġto Ġconnect Ġfailed . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ ĠFAILED ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġstate : ĠStatus Ġ= Ġ ĠStatus . DIS CONNECTED ĊĠĠĠ Ġprivate Ġvar Ġdetailed State : ĠD eta iled State Ġ= ĊĠĠĠĠĠĠĠ ĠD eta iled State . IDLE ĊĠĠĠ Ġprivate Ġvar Ġreason : ĠChanged Reason ? Ġ= Ġnull ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġis Ġthe Ġmap Ġdescribed Ġin Ġthe ĠJ avadoc Ġcomment Ġabove . ĠThe Ġpositions ĊĠĠĠĠ Ġ* Ġof Ġthe Ġelements Ġof Ġthe Ġarray Ġmust Ġcorrespond Ġto Ġthe Ġordinal Ġvalues ĊĠĠĠĠ Ġ* Ġof Ġ` Detailed State `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġstate Map [ Detailed State . IDLE ] Ġ= ĠStatus . DIS CONNECTED ĊĠĠĠĠĠĠĠ Ġstate Map [ Detailed State . CONNECT ING ] Ġ= ĠStatus . CONNECT ING ĊĠĠĠĠĠĠĠ Ġstate Map [ Detailed State . CONNECT ING _ REGISTRY ] Ġ= ĠStatus . CONNECT ING ĊĠĠĠĠĠĠĠ Ġstate Map [ Detailed State . CONNECT ING _ DEVICE GATE WAY ] Ġ= ĠStatus . CONNECT ING ĊĠĠĠĠĠĠĠ Ġstate Map [ Detailed State . RE CONNECT ING ] Ġ= ĠStatus . CONNECT ING ĊĠĠĠĠĠĠĠ Ġstate Map [ Detailed State . H AN DO FF ] Ġ= ĠStatus . CONNECT ING ĊĠĠĠĠĠĠĠ Ġstate Map [ Detailed State . CONNECTED ] Ġ= ĠStatus . CONNECTED ĊĠĠĠĠĠĠĠ Ġstate Map [ Detailed State . DIS CONNECT ING ] Ġ= ĠStatus . DIS CONNECTED ĊĠĠĠĠĠĠĠ Ġstate Map [ Detailed State . DIS CONNECTED ] Ġ= ĠStatus . DIS CONNECTED ĊĠĠĠĠĠĠĠ Ġstate Map [ Detailed State . FAILED ] Ġ= ĠStatus . DIS CONNECTED ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Connected Or Connecting (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstate Ġ=== ĠStatus . CONNECTED Ġ|| Ġstate Ġ=== ĠStatus . CONNECT ING ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIndicates Ġwhether Ġconnection Ġexists Ġand Ġit Ġis Ġpossible Ġto Ġestablish ĊĠĠĠĠ Ġ* Ġconnections Ġand Ġpass Ġdata . ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġthe Ġstate Ġis ĠCONNECT ED , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Connected (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstate Ġ=== ĠStatus . CONNECTED ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReports Ġthe Ġcurrent Ġstate Ġof Ġthe Ġconnection . ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġstate ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetState (): ĠStatus Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstate ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReports Ġthe Ġcurrent Ġdetail Ġstate Ġof Ġthe Ġconnection . ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġdetail Ġstate ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Detailed State (): ĠD eta iled State ? Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdetailed State ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġdetail Ġstate Ġof Ġthe Ġconnection . ĊĠĠĠĠ Ġ* Ġ@ param Ġdetailed State Ġthe Ġ[ Detailed State ]. ĊĠĠĠĠ Ġ* Ġ@ param Ġreason Ġa Ġ` String ` Ġindicating Ġthe Ġreason Ġfor Ġthe Ġstate Ġchange , ĊĠĠĠĠ Ġ* Ġif Ġone Ġwas Ġsupplied . ĠMay Ġbe Ġ` null `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Detailed State ( detailed State : ĠD eta iled State , Ġreason : ĠChanged Reason ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġ" state Ġchanged Ġ: Ġ${ this . detailed State } Ġ-> Ġ$ detailed State Ġ") ĊĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . detailed State Ġ= Ġdetailed State ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . state Ġ= Ġstate Map [ detailed State ] Ġ?: ĠStatus . DIS CONNECTED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . reason Ġ= Ġreason ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder (" Transport State : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" state : Ġ"). append ( state ). append ("/ "). append ( detailed State ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (", Ġreason : Ġ"). append ( reason Ġ?: Ġ"( un specified )") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbuilder . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }