calico.frp.SignallingSortedMapRef$
See theSignallingSortedMapRef companion class
object SignallingSortedMapRef
Attributes
- Companion:
- class
- Source:
- SignallingSortedMapRef.scala
- Graph
- Supertypes
- class Objecttrait Matchableclass Any
- Self type
Members list
Concise view
Value members
Concrete methods
def
State.this._1
case1=>
State.this._2
case2=>
State.this._3
case3=>
State.this._4
case_=>
thrownewIndexOutOfBoundsException(n.toString())
}
}
objectStateextendsAnyRefwithProduct{
overridedeftoString:String="State"
typeMirroredMonoType
deffromProduct(`x$0₃`:Product):MirroredMonoType=newState(`x$0₃`.productElement(0).$asInstanceOf$[SortedMap[K,V]],`x$0₃`.productElement(1).$asInstanceOf$[Long],`x$0₃`.productElement(2).$asInstanceOf$[LongMap[Deferred[F,Tuple2[SortedMap[K,V],Long]]]],`x$0₃`.productElement(3).$asInstanceOf$[Map[K,KeyState]])
}
caseclassKeyState(`lastUpdate₂`:Long,`listeners₂`:LongMap[Deferred[F,Tuple2[Option[V],Long]]]){
overridedefhashCode():Int={
var`acc₂`:Int=-889275714
`acc₂`=mix(`acc₂`,KeyState.this.productPrefix.hashCode())
`acc₂`=mix(`acc₂`,longHash(lastUpdate))
`acc₂`=mix(`acc₂`,anyHash(listeners))
finalizeHash(`acc₂`,2)
}
overridedefequals(`x$0₄`:Any):Boolean=KeyState.this.eq(`x$0₄`.$asInstanceOf$[Object]).||(`x$0₄`match{
casex$0:KeyState@unchecked=>
KeyState.this.lastUpdate.==(`x$0₅`.lastUpdate).&&(KeyState.this.listeners.==(`x$0₅`.listeners)).&&(`x$0₅`.canEqual(KeyState.this))
case_=>
false
})
overridedeftoString():String=_toString(KeyState.this)
overridedefcanEqual(`that₂`:Any):Boolean=`that₂`.isInstanceOf[KeyState@unchecked]
overridedefproductArity:Int=2
overridedefproductPrefix:String="KeyState"
overridedefproductElement(`n₂`:Int):Any=`n₂`match{
case0=>
KeyState.this._1
case1=>
KeyState.this._2
case_=>
thrownewIndexOutOfBoundsException(`n₂`.toString())
}
}
objectKeyStateextendsAnyRefwithProduct{
overridedeftoString:String="KeyState"
typeMirroredMonoType
deffromProduct(`x$0₆`:Product):MirroredMonoType=newKeyState(`x$0₆`.productElement(0).$asInstanceOf$[Long],`x$0₆`.productElement(1).$asInstanceOf$[LongMap[Deferred[F,Tuple2[Option[V],Long]]]])
}
finallazyvalgiven_Ordering_K:Ordering[K]=K.toOrdering
toFunctorOps[F,Tuple2[Ref[F,State],Ref[F,Long]]](catsSyntaxSemigroupal[F,Ref[F,State]](F.ref[State](State.apply(SortedMap.empty[K,Nothing](given_Ordering_K),0L,LongMap.empty[Deferred[F,Tuple2[SortedMap[K,V],Long]]],SortedMap.empty[K,Nothing](given_Ordering_K))))(F).product[Ref[F,Long]](F.ref[Long](1L)))(F).map[SignallingSortedMapRef[F,K,V]](((x$1:Tuple2[Ref[F,State],Ref[F,Long]])=>x$1match{
caseTuple2(state,ids)=>
valnewId:F[Long]=ids.getAndUpdate(((_$3:Long)=>_$3.+(1)))
deftraverse_[A,U](it:Iterable[A])(f:Function1[A,F[U]]):F[Unit]=it.foldLeft[F[Unit]](F.unit)(((_$4:F[Unit],_$5:A)=>catsSyntaxApply[F,Unit](_$4)(F).<*[U](f.apply(_$5))))
defincrementLastUpdate(lu:Long):Long=if(lu.==(-2L))0Lelselu.+(1)
defupdateMapAndNotify[O](state:State,`f₂`:Function1[SortedMap[K,V],Tuple2[SortedMap[K,V],O]]):Tuple2[State,F[O]]={
val$1$:Tuple2[SortedMap[K,V],O]=(`f₂`.apply(state.value):@unchecked)match{
caseTuple2(newValue,result)=>
Tuple2.apply[SortedMap[K,V],O](newValue,result)
}
val`newValue₂`:SortedMap[K,V]=$1$._1
val`result₂`:O=$1$._2
val`lastUpdate₃`:Long=incrementLastUpdate(state.lastUpdate)
valnewKeys:Map[K,KeyState]=`newValue₂`.view.mapValues[KeyState](((_$6:V)=>KeyState.apply(`lastUpdate₃`,LongMap.empty[Deferred[F,Tuple2[Option[V],Long]]]))).toMap[K,KeyState](refl[Tuple2[K,KeyState]])
valnewState:State=State.apply(`newValue₂`,`lastUpdate₃`,LongMap.empty[Deferred[F,Tuple2[SortedMap[K,V],Long]]],newKeys)
valnotifyListeners:F[Unit]=traverse_[Deferred[F,Tuple2[SortedMap[K,V],Long]],Boolean](state.listeners.values)(((_$7:Deferred[F,Tuple2[SortedMap[K,V],Long]])=>_$7.complete(ArrowAssoc[SortedMap[K,V]](`newValue₂`).->[Long](`lastUpdate₃`))))
valnotifyKeyListeners:F[Unit]=traverse_[Tuple2[K,KeyState],Unit](state.keys)(((`x$1₂`:Tuple2[K,KeyState])=>`x$1₂`match{
caseTuple2(k,KeyState(_,listeners))=>
valv:Option[V]=`newValue₂`.get(k)
traverse_[Deferred[F,Tuple2[Option[V],Long]],Boolean](`listeners₃`.values)(((_$8:Deferred[F,Tuple2[Option[V],Long]])=>_$8.complete(ArrowAssoc[Option[V]](v).->[Long](`lastUpdate₃`))))
}))
ArrowAssoc[State](newState).->[F[O]](toFunctorOps[F,Unit](catsSyntaxApply[F,Unit](notifyListeners)(F).*>[Unit](notifyKeyListeners))(F).as[O](`result₂`))
}
defupdateKeyAndNotify[U](`state₂`:State,`k₂`:K,`f₃`:Function1[Option[V],Tuple2[Option[V],U]]):Tuple2[State,F[U]]={
val$2$:Tuple2[Option[V],U]=(`f₃`.apply(`state₂`.value.get(`k₂`)):@unchecked)match{
caseTuple2(newValue,result)=>
Tuple2.apply[Option[V],U](`newValue₃`,`result₃`)
}
val`newValue₄`:Option[V]=$2$._1
val`result₄`:U=$2$._2
valnewMap:SortedMap[K,V]=`newValue₄`.fold[SortedMap[K,V]](`state₂`.value.-(`k₂`))(((`v₂`:V)=>`state₂`.value.+[V](ArrowAssoc[K](`k₂`).->[V](`v₂`))))
val`lastUpdate₄`:Long=incrementLastUpdate(`state₂`.lastUpdate)
vallastKeyUpdate:Long=if(`newValue₄`.isDefined)`lastUpdate₄`else-1L
val`newKeys₂`:Map[K,KeyState]=if(`newValue₄`.isDefined)`state₂`.keys.updated[KeyState](`k₂`,KeyState.apply(lastKeyUpdate,LongMap.empty[Deferred[F,Tuple2[Option[V],Long]]]))else`state₂`.keys.-(`k₂`)
val`newState₂`:State=State.apply(newMap,`lastUpdate₄`,LongMap.empty[Deferred[F,Tuple2[SortedMap[K,V],Long]]],`newKeys₂`)
val`notifyListeners₂`:F[Unit]=traverse_[Deferred[F,Tuple2[SortedMap[K,V],Long]],Boolean](`state₂`.listeners.values)(((_$9:Deferred[F,Tuple2[SortedMap[K,V],Long]])=>_$9.complete(ArrowAssoc[SortedMap[K,V]](newMap).->[Long](`lastUpdate₄`))))
val`notifyKeyListeners₂`:F[Unit]=`state₂`.keys.get(`k₂`).fold[F[Unit]](F.unit)(((`x$1₃`:KeyState)=>`x$1₃`match{
caseKeyState(_,listeners)=>
traverse_[Deferred[F,Tuple2[Option[V],Long]],Boolean](`listeners₄`.values)(((_$10:Deferred[F,Tuple2[Option[V],Long]])=>_$10.complete(ArrowAssoc[Option[V]](`newValue₄`).->[Long](`lastUpdate₄`))))
}))
ArrowAssoc[State](`newState₂`).->[F[U]](toFunctorOps[F,Unit](catsSyntaxApply[F,Unit](`notifyListeners₂`)(F).*>[Unit](`notifyKeyListeners₂`))(F).as[U](`result₄`))
}
{
finalclass$anon()extendsSignallingSortedMapRef[F,K,V]withAbstractSignallingRef[F,State,SortedMap[K,V]](newId,`state₃`)(F){outer:$anon=>
defgetValue(s:State):SortedMap[K,V]=s.value
defgetLastUpdate(`s₂`:State):Long=`s₂`.lastUpdate
defwithListener(`s₃`:State,id:Long,wait:Deferred[F,Tuple2[SortedMap[K,V],Long]]):State={
vallisteners$1:LongMap[Deferred[F,Tuple2[SortedMap[K,V],Long]]]=`s₃`.listeners.updated[Deferred[F,Tuple2[SortedMap[K,V],Long]]](id,wait)
valvalue$1:SortedMap[K,V]@uncheckedVariance=`s₃`.copy$default$1
vallastUpdate$1:Long@uncheckedVariance=`s₃`.copy$default$2
valkeys$1:Map[K,KeyState]@uncheckedVariance=`s₃`.copy$default$4
`s₃`.copy(value$1,lastUpdate$1,listeners=listeners$1,keys$1)
}
defwithoutListener(`s₄`:State,`id₂`:Long):State={
vallisteners$2:LongMap[Deferred[F,Tuple2[SortedMap[K,V],Long]]]=`s₄`.listeners.removed(`id₂`)
valvalue$2:SortedMap[K,V]@uncheckedVariance=`s₄`.copy$default$1
vallastUpdate$2:Long@uncheckedVariance=`s₄`.copy$default$2
valkeys$2:Map[K,KeyState]@uncheckedVariance=`s₄`.copy$default$4
`s₄`.copy(value$2,lastUpdate$2,listeners=listeners$2,keys$2)
}
defupdateAndNotify[O](`s₅`:State,`f₄`:Function1[SortedMap[K,V],Tuple2[SortedMap[K,V],O]]):Tuple2[State,F[O]]=updateMapAndNotify[O](`s₅`,`f₄`)
defkeys:Signal[F,SortedSet[K]]=SignalOps[F,SortedMap[K,V]]($anon.this).map[SortedSet[K]](((_$11:SortedMap[K,V])=>_$11.keySet))(F).changes(catsKernelOrderForSortedSet[K](K))
defapply(`k₃`:K):SignallingRef[F,Option[V]]={
finalclass$anon()extendsSignallingRef[F,Option[V]]withAbstractSignallingRef[F,State,Option[V]](newId,`state₃`)(F){
defgetValue(`s₆`:State):Option[V]=`s₆`.value.get(`k₃`)
defgetLastUpdate(`s₇`:State):Long=`s₇`.keys.get(`k₃`).fold[Long](-1L)(((_$12:KeyState)=>_$12.lastUpdate))
defwithListener(`s₈`:State,`id₃`:Long,`wait₂`:Deferred[F,Tuple2[Option[V],Long]]):State={
valkeys$3:Map[K,KeyState]=`s₈`.keys.updatedWith[KeyState](`k₃`)(((ks:Option[KeyState])=>{
val`lastUpdate₅`:Long=ks.fold[Long](-1L)(((_$13:KeyState)=>_$13.lastUpdate))
val`listeners₅`:LongMap[Deferred[F,Tuple2[Option[V],Long]]]=ks.fold[LongMap[Deferred[F,Tuple2[Option[V],Long]]]](LongMap.empty[Deferred[F,Tuple2[Option[V],Long]]])(((_$14:KeyState)=>_$14.listeners)).updated[Deferred[F,Tuple2[Option[V],Long]]](`id₃`,`wait₂`)
Some.apply[KeyState](KeyState.apply(`lastUpdate₅`,`listeners₅`))
}))
valvalue$3:SortedMap[K,V]@uncheckedVariance=`s₈`.copy$default$1
vallastUpdate$3:Long@uncheckedVariance=`s₈`.copy$default$2
vallisteners$3:LongMap[Deferred[F,Tuple2[SortedMap[K,V],Long]]]@uncheckedVariance=`s₈`.copy$default$3
`s₈`.copy(value$3,lastUpdate$3,listeners$3,keys=keys$3)
}
defwithoutListener(`s₉`:State,`id₄`:Long):State={
valkeys$4:Map[K,KeyState]=`s₉`.keys.updatedWith[KeyState](`k₃`)(((_$15:Option[KeyState])=>_$15.map[KeyState](((`ks₂`:KeyState)=>{
vallisteners$4:LongMap[Deferred[F,Tuple2[Option[V],Long]]]=`ks₂`.listeners.removed(`id₄`)
vallastUpdate$4:Long@uncheckedVariance=`ks₂`.copy$default$1
`ks₂`.copy(lastUpdate$4,listeners=listeners$4)
})).filterNot(((`ks₃`:KeyState)=>`ks₃`.lastUpdate.==(-1).&&(`ks₃`.listeners.isEmpty)))))
valvalue$4:SortedMap[K,V]@uncheckedVariance=`s₉`.copy$default$1
vallastUpdate$5:Long@uncheckedVariance=`s₉`.copy$default$2
vallisteners$5:LongMap[Deferred[F,Tuple2[SortedMap[K,V],Long]]]@uncheckedVariance=`s₉`.copy$default$3
`s₉`.copy(value$4,lastUpdate$5,listeners$5,keys=keys$4)
}
defupdateAndNotify[O](`s₁₀`:State,`f₅`:Function1[Option[V],Tuple2[Option[V],O]]):Tuple2[State,F[O]]=updateKeyAndNotify[O](`s₁₀`,`k₃`,`f₅`)
}
(new$anon():AbstractSignallingRef[F,State,Option[V]])
}
}
(new$anon():SignallingSortedMapRef[F,K,V]&AbstractSignallingRef[F,State,SortedMap[K,V]])
}
}))
}" t="n"class="documentableName ">apply[F[_], K, V](using F: Concurrent[F], K: Order[K]): F[SignallingSortedMapRef[F, K, V]]
Attributes
- Source:
- SignallingSortedMapRef.scala