package Ġorg . d 7 z . light . db . memory . structs . map Ċ Ċ import Ġorg . d 7 z . light . db . api . struct . Light Map Ċ import Ġorg . d 7 z . light . db . api . struct . Map Context Ċ import Ġorg . d 7 z . light . db . memory . utils . Destroy Container Ċ import Ġjava . util . Optional Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . full . is Subclass Of Ċ Ċ class ĠMem Map Context Ġ: ĠMap Context Ġ{ ĊĊĠĠĠ Ġval Ġcontainer Ġ= ĠDestroy Container < Map Data Container < Any , ĠAny >>() ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġfun Ġ< K Ġ: ĠAny , ĠV Ġ: ĠAny > ĠgetContent ( ĊĠĠĠĠĠĠĠ Ġkey : ĠString , ĊĠĠĠĠĠĠĠ Ġkey Type : ĠK Class < K >, ĊĠĠĠĠĠĠĠ Ġvalue Type : ĠK Class < V >, ĊĠĠĠ Ġ): ĠOptional < Map Data Container < K , ĠV >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontainer . getContainer ( key ). filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . key Type . is Subclass Of ( key Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . valueType . is Subclass Of ( valueType ) ĊĠĠĠĠĠĠĠ Ġ} Ġas ĠOptional < Map Data Container < K , ĠV >> ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< K Ġ: ĠAny , ĠV Ġ: ĠAny > Ġget ( ĊĠĠĠĠĠĠĠ Ġkey : ĠString , ĊĠĠĠĠĠĠĠ Ġkey Type : ĠK Class < K >, ĊĠĠĠĠĠĠĠ Ġvalue Type : ĠK Class < V >, ĊĠĠĠ Ġ): ĠOptional < out ĠLight Map < K , ĠV >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetContent ( key , Ġkey Type , Ġvalue Type ). map Ġ{ ĠMem Light Map ( key , Ġkey Type , Ġvalue Type , Ġthis ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġoverride Ġfun Ġ< K Ġ: ĠAny , ĠV Ġ: ĠAny > Ġget OrCreate ( ĊĠĠĠĠĠĠĠ Ġkey : ĠString , ĊĠĠĠĠĠĠĠ Ġkey Type : ĠK Class < K >, ĊĠĠĠĠĠĠĠ Ġvalue Type : ĠK Class < V >, ĊĠĠĠĠĠĠĠ Ġcreate : Ġ() Ġ-> ĠPair < K , ĠV >, ĊĠĠĠ Ġ): ĠLight Map < K , ĠV > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontainer . get OrCreate ( key ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠConcurrent HashMap < K , ĠV >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpair Ġ= Ġcreate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap . put ( pair . first , Ġpair . second ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap Data Container ( key Type , Ġvalue Type , Ġmap ) Ġas ĠMap Data Container < Any , ĠAny > ĊĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . key Type . is Subclass Of ( key Type ). not () Ġ|| Ġit . valueType . is Subclass Of ( valueType ). not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠClass CastException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ it . key Type } Ġnot ĠSub class Of Ġ$ key Type Ġor Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ it . valueType } Ġnot ĠSub class Of Ġ$ valueType Ġ. " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMem Light Map ( key , Ġkey Type , Ġvalue Type , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġexists ( key : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontainer . exists ( key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Timeout ( key : ĠString ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontainer . get Timeout ( key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetTimeout ( key : ĠString , Ġsecond : ĠLong ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontainer . setTimeout ( key , Ġsecond ) ĊĠĠĠ Ġ} Ċ } Ċ