2015-05-17 12:28:47 +02:00
|
|
|
/**
|
2016-02-23 12:58:39 +01:00
|
|
|
* Copyright (C) 2015-2016 Lightbend Inc. <http://www.lightbend.com>
|
2015-05-17 12:28:47 +02:00
|
|
|
*/
|
|
|
|
|
package docs.ddata
|
|
|
|
|
|
|
|
|
|
import akka.cluster.ddata.ReplicatedData
|
|
|
|
|
import akka.cluster.ddata.GSet
|
|
|
|
|
|
|
|
|
|
//#twophaseset
|
|
|
|
|
case class TwoPhaseSet(
|
2016-06-02 14:06:57 +02:00
|
|
|
adds: GSet[String] = GSet.empty,
|
2015-05-17 12:28:47 +02:00
|
|
|
removals: GSet[String] = GSet.empty)
|
|
|
|
|
extends ReplicatedData {
|
|
|
|
|
type T = TwoPhaseSet
|
|
|
|
|
|
|
|
|
|
def add(element: String): TwoPhaseSet =
|
|
|
|
|
copy(adds = adds.add(element))
|
|
|
|
|
|
|
|
|
|
def remove(element: String): TwoPhaseSet =
|
|
|
|
|
copy(removals = removals.add(element))
|
|
|
|
|
|
2016-03-18 12:28:07 +01:00
|
|
|
def elements: Set[String] = adds.elements diff removals.elements
|
2015-05-17 12:28:47 +02:00
|
|
|
|
|
|
|
|
override def merge(that: TwoPhaseSet): TwoPhaseSet =
|
|
|
|
|
copy(
|
2015-07-02 12:12:34 +02:00
|
|
|
adds = this.adds.merge(that.adds),
|
|
|
|
|
removals = this.removals.merge(that.removals))
|
2015-05-17 12:28:47 +02:00
|
|
|
}
|
|
|
|
|
//#twophaseset
|