/* Ċ Ġ* ĠCopyright ĠP ho eb os ys Ċ Ġ* Ċ Ġ* Ġ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 Ġys . pho eb os . redis . protocol Ċ Ċ import Ġys . pho eb os . redis . CHARSET Ċ import Ġys . pho eb os . redis . CRL F Ċ import Ġorg . apache . commons . text . String Escape Utils . ESCAPE _ JAVA Ċ import Ġjava . lang . StringBuilder Ċ Ċ val Ġempty Command : ĠCommand Ġ= ĠCommand ("", Ġempty List ()) Ċ Ċ class ĠCommand ( val Ġcmd : ĠString , Ġprivate Ġval Ġargs : ĠList < String >): ĠProtocol able Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġis NotEmpty (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcmd . isNotEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Protocol (): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder ("* "). append ( args . size Ġ+ Ġ 1 ). append ( CRL F ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ('$ '). append ( cmd . length ). append ( CRL F ). append ( cmd ). append ( CRL F ) ĊĠĠĠĠĠĠĠ Ġargs . forEach Ġ{ Ġsb . append ('$ '). append ( it . length ). append ( CRL F ). append ( it ). append ( CRL F ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsb . toString (). toByteArray ( CHARSET ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( args . isEmpty ()) Ġthis . cmd Ġ+ ĠCRL F ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġargs . join To ( StringBuilder ( cmd ). append (' Ġ'), Ġseparator Ġ= Ġ"\" Ġ\" ", Ġprefix Ġ= Ġ"\" ", Ġpostfix Ġ= Ġ"\"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĠESC APE _ JAVA . translate ( it ) Ġ}. toString () Ġ+ ĠCRL F ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġcompanion Ġobject : ĠRedis Stream < Command > Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġoverride Ġfun Ġwrite ( outs : ĠOutputStream , Ġt : ĠCommand ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġout s . write ( t . to Protocol ()) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġoverride Ġfun Ġread ( ins : ĠInputStream ): ĠCommand ? Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠProtocol InputStream ( ins ). read Command () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ} Ċ } Ċ