Go implementations of data structures from A comprehensive study of Convergent and Commutative Replicated Data Types
two_phase_set, _ := hob.NewTwoPhaseSet()
two_phase_set.Add("I'm in the add set")
two_phase_set.Add("I'm also in the add set")
two_phase_set.Remove("I'm in the add set") // and in the remove set
json, _ := two_phase_set.JSON()
Produces:
{
"type":"2p-set",
"a": ["I'm in the add set","I'm also in the add set"],
"r": ["I'm in the add set"]
}
lwwset, _ := hob.NewLWWSet("a")
lwwset.Add("Dude!")
lwwset.Remove("Dude!")
lwwset.Add("Other key")
json, _ := lwwset.JSON()
Produces:
{
"type":"lww-e-set",
"bias":"a",
"e":[
["Dude!","2012-07-16T00:42:05.146259Z","2012-07-16T00:42:05.146263Z"],
["Other key","2012-07-16T00:42:05.146267Z",""]
]
}
A few Open Source implementations of these data structures exist. Hob conforms to the same JSON format as:
- Reid Draper Knockbox (Clojure Implementation - Github Repo)
- Kyle Kingsbury Meangirls (Ruby Implementation - Github Repo)
A lot! This library lacks a lot at the moment, including JSON decoding. I'm trying to figure out the best idiomatic Go way to handle parsing multiple data types with the same code.
go test
hob is (c) Michael R. Bernstein, 2012
hob is distributed under the MIT License, see LICENSE
file for details.