package Ġorg . jetbrains . kotlin x . jupyter Ċ Ċ import Ġkotlinx . serialization . encode ToString Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . json . Json Element Ċ import Ġkotlinx . serialization . json . JsonObject Ċ import Ġkotlinx . serialization . json . build JsonObject Ċ import Ġkotlinx . serialization . json . encode ToJson Element Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util . Date Ċ import Ġjava . util . UUID Ċ Ċ private Ġval ĠISO 8 6 0 1 Date Formatter Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ' T ' HH : mm Z ") Ċ internal Ġval ĠISO 8 6 0 1 Date Now : ĠString Ġget () Ġ= ĠISO 8 6 0 1 Date Formatter . format ( Date ()) Ċ Ċ val Ġempty JsonObject Ġ= ĠJsonObject ( map Of ()) Ċ internal Ġval Ġempty JsonObject String Ġ= Ġempty JsonObject . toString () Ċ internal Ġval Ġempty JsonObject String Bytes Ġ= Ġempty JsonObject String . toByteArray () Ċ Ċ data Ġclass ĠMessage ( ĊĠĠĠ Ġval Ġid : ĠList < ByteArray > Ġ= ĠlistOf (), ĊĠĠĠ Ġval Ġdata : ĠMessage Data Ġ= ĠMessage Data () Ċ ) Ġ{ ĊĠĠĠ Ġval Ġtype : ĠMessageType ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdata . header !!. type ĊĊĠĠĠ Ġval Ġcontent : ĠMessage Content ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdata . content !! ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġ" msg [ ${ id . join ToString Ġ{ Ġit . toString ( charset Ġ= ĠChar sets . UTF _ 8 ) Ġ}} ] Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson . encode ToString ( data ) Ċ } Ċ Ċ @ Jvm Name (" jsonObject For String ") Ċ fun ĠjsonObject ( var arg Ġnamed Values : ĠPair < String , ĠString ?> ): ĠJsonObject Ġ= ĠJson . encode ToJson Element ( hash Map Of (* named Values )) Ġas ĠJsonObject Ċ Ċ @ Jvm Name (" jsonObject For Int ") Ċ fun ĠjsonObject ( var arg Ġnamed Values : ĠPair < String , ĠInt >): ĠJsonObject Ġ= ĠJson . encode ToJson Element ( hash Map Of (* named Values )) Ġas ĠJsonObject Ċ Ċ @ Jvm Name (" jsonObject For Primitive ") Ċ fun ĠjsonObject ( var arg Ġnamed Values : ĠPair < String , ĠJson Element >): ĠJsonObject Ġ= ĠJson . encode ToJson Element ( hash Map Of (* named Values )) Ġas ĠJsonObject Ċ Ċ fun ĠjsonObject ( named Values : ĠIterable < Pair < String , ĠAny ? >> ): ĠJsonObject Ġ= Ġbuild JsonObject Ġ{ ĊĠĠĠ Ġnamed Values . forEach Ġ{ Ġ( key , Ġvalue ) Ġ-> Ġput ( key , ĠJson . encode ToJson Element ( value )) Ġ} Ċ } Ċ Ċ internal Ġoperator Ġfun ĠJsonObject ?. get ( key : ĠString ) Ġ= Ġthis ?. get ( key ) Ċ Ċ fun Ġmake Reply Message ( ĊĠĠĠ Ġmsg : ĠMessage , ĊĠĠĠ Ġmsg Type : ĠMessageType ? Ġ= Ġnull , ĊĠĠĠ ĠsessionId : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġheader : ĠMessage Header ? Ġ= Ġnull , ĊĠĠĠ Ġparent Header : ĠMessage Header ? Ġ= Ġnull , ĊĠĠĠ Ġmetadata : ĠJson Element ? Ġ= Ġnull , ĊĠĠĠ Ġcontent : ĠMessage Content ? Ġ= Ġnull Ċ ) Ġ= ĊĠĠĠ ĠMessage ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġmsg . id , ĊĠĠĠĠĠĠĠ ĠMessage Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader Ġ= Ġheader Ġ?: Ġmake Header ( msg Type Ġ= Ġmsg Type , Ġincoming Msg Ġ= Ġmsg , ĠsessionId Ġ= ĠsessionId ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent Header Ġ= Ġparent Header Ġ?: Ġmsg . data . header , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmetadata Ġ= Ġmetadata , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġcontent ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ċ Ċ fun Ġmake Header ( msg Type : ĠMessageType ? Ġ= Ġnull , Ġincoming Msg : ĠMessage ? Ġ= Ġnull , ĠsessionId : ĠString ? Ġ= Ġnull ): ĠMessage Header Ġ{ ĊĠĠĠ Ġval Ġheader Ġ= Ġincoming Msg ?. data ?. header ĊĠĠĠ Ġreturn ĠMessage Header ( ĊĠĠĠĠĠĠĠ ĠUUID . randomUUID (). toString (), ĊĠĠĠĠĠĠĠ Ġmsg Type Ġ?: ĠMessageType . NONE , ĊĠĠĠĠĠĠĠ Ġheader ?. session Ġ?: ĠsessionId , ĊĠĠĠĠĠĠĠ Ġheader ?. username Ġ?: Ġ" kernel ", ĊĠĠĠĠĠĠĠ Ġprotocol Version , ĊĠĠĠĠĠĠĠ ĠISO 8 6 0 1 Date Now ĊĠĠĠ Ġ) Ċ } Ċ