Commit fecf1327 authored by Kirill Smelkov's avatar Kirill Smelkov

X Unexport SetXXX from packages API

parent bf9a7405
...@@ -21,10 +21,9 @@ ...@@ -21,10 +21,9 @@
# See COPYING file for full licensing terms. # See COPYING file for full licensing terms.
# See https://www.nexedi.com/licensing for rationale and options. # See https://www.nexedi.com/licensing for rationale and options.
PACKAGE=$1 KIND=$1
KIND=$2 VALUE=$2
VALUE=$3 out=$3
out=$4
input=$(dirname $0)/set.go.in input=$(dirname $0)/set.go.in
...@@ -32,7 +31,6 @@ echo "// Code generated by gen-set $KIND $VALUE; DO NOT EDIT." >$out ...@@ -32,7 +31,6 @@ echo "// Code generated by gen-set $KIND $VALUE; DO NOT EDIT." >$out
echo >>$out echo >>$out
sed \ sed \
-e "s/PACKAGE/$PACKAGE/g" \
-e "s/VALUE/$VALUE/g" \ -e "s/VALUE/$VALUE/g" \
-e "s/Set/Set${KIND}/g" \ -e "s/Set/${KIND}/g" \
$input >>$out $input >>$out
...@@ -19,10 +19,10 @@ ...@@ -19,10 +19,10 @@
package set package set
//go:generate ./gen-set set I64 int64 zset_i64.go //go:generate ./gen-set I64 int64 zset_i64.go
//go:generate ./gen-set set Str string zset_str.go //go:generate ./gen-set Str string zset_str.go
//go:generate ./gen-set set Oid _Oid zset_oid.go //go:generate ./gen-set Oid _Oid zset_oid.go
//go:generate ./gen-set set Tid _Tid zset_tid.go //go:generate ./gen-set Tid _Tid zset_tid.go
import ( import (
"lab.nexedi.com/kirr/neo/go/zodb" "lab.nexedi.com/kirr/neo/go/zodb"
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
// See COPYING file for full licensing terms. // See COPYING file for full licensing terms.
// See https://www.nexedi.com/licensing for rationale and options. // See https://www.nexedi.com/licensing for rationale and options.
package PACKAGE package set
import ( import (
"fmt" "fmt"
......
...@@ -27,35 +27,35 @@ import ( ...@@ -27,35 +27,35 @@ import (
"strings" "strings"
) )
// SetI64 is a set of int64. // I64 is a set of int64.
type SetI64 map[int64]struct{} type I64 map[int64]struct{}
// Add adds v to the set. // Add adds v to the set.
func (s SetI64) Add(v int64) { func (s I64) Add(v int64) {
s[v] = struct{}{} s[v] = struct{}{}
} }
// Del removes v from the set. // Del removes v from the set.
// it is noop if v was not in the set. // it is noop if v was not in the set.
func (s SetI64) Del(v int64) { func (s I64) Del(v int64) {
delete(s, v) delete(s, v)
} }
// Has checks whether the set contains v. // Has checks whether the set contains v.
func (s SetI64) Has(v int64) bool { func (s I64) Has(v int64) bool {
_, ok := s[v] _, ok := s[v]
return ok return ok
} }
// Update adds t values to s. // Update adds t values to s.
func (s SetI64) Update(t SetI64) { func (s I64) Update(t I64) {
for v := range t { for v := range t {
s.Add(v) s.Add(v)
} }
} }
// Elements returns all elements of set as slice. // Elements returns all elements of set as slice.
func (s SetI64) Elements() []int64 { func (s I64) Elements() []int64 {
ev := make([]int64, len(s)) ev := make([]int64, len(s))
i := 0 i := 0
for e := range s { for e := range s {
...@@ -66,14 +66,14 @@ func (s SetI64) Elements() []int64 { ...@@ -66,14 +66,14 @@ func (s SetI64) Elements() []int64 {
} }
// Union returns s ∪ t // Union returns s ∪ t
func (s SetI64) Union(t SetI64) SetI64 { func (s I64) Union(t I64) I64 {
// l = max(len(s), len(t)) // l = max(len(s), len(t))
l := len(s) l := len(s)
if lt := len(t); lt > l { if lt := len(t); lt > l {
l = lt l = lt
} }
u := make(SetI64, l) u := make(I64, l)
for v := range s { for v := range s {
u.Add(v) u.Add(v)
...@@ -85,8 +85,8 @@ func (s SetI64) Union(t SetI64) SetI64 { ...@@ -85,8 +85,8 @@ func (s SetI64) Union(t SetI64) SetI64 {
} }
// Intersection returns s ∩ t // Intersection returns s ∩ t
func (s SetI64) Intersection(t SetI64) SetI64 { func (s I64) Intersection(t I64) I64 {
i := SetI64{} i := I64{}
for v := range s { for v := range s {
if t.Has(v) { if t.Has(v) {
i.Add(v) i.Add(v)
...@@ -96,8 +96,8 @@ func (s SetI64) Intersection(t SetI64) SetI64 { ...@@ -96,8 +96,8 @@ func (s SetI64) Intersection(t SetI64) SetI64 {
} }
// Difference returns s\t. // Difference returns s\t.
func (s SetI64) Difference(t SetI64) SetI64 { func (s I64) Difference(t I64) I64 {
d := SetI64{} d := I64{}
for v := range s { for v := range s {
if !t.Has(v) { if !t.Has(v) {
d.Add(v) d.Add(v)
...@@ -107,8 +107,8 @@ func (s SetI64) Difference(t SetI64) SetI64 { ...@@ -107,8 +107,8 @@ func (s SetI64) Difference(t SetI64) SetI64 {
} }
// SymmetricDifference returns s Δ t. // SymmetricDifference returns s Δ t.
func (s SetI64) SymmetricDifference(t SetI64) SetI64 { func (s I64) SymmetricDifference(t I64) I64 {
d := SetI64{} d := I64{}
for v := range s { for v := range s {
if !t.Has(v) { if !t.Has(v) {
d.Add(v) d.Add(v)
...@@ -123,7 +123,7 @@ func (s SetI64) SymmetricDifference(t SetI64) SetI64 { ...@@ -123,7 +123,7 @@ func (s SetI64) SymmetricDifference(t SetI64) SetI64 {
} }
// Equal returns whether a == b. // Equal returns whether a == b.
func (a SetI64) Equal(b SetI64) bool { func (a I64) Equal(b I64) bool {
if len(a) != len(b) { if len(a) != len(b) {
return false return false
} }
...@@ -139,8 +139,8 @@ func (a SetI64) Equal(b SetI64) bool { ...@@ -139,8 +139,8 @@ func (a SetI64) Equal(b SetI64) bool {
} }
// Clone returns copy of the set. // Clone returns copy of the set.
func (orig SetI64) Clone() SetI64 { func (orig I64) Clone() I64 {
klon := make(SetI64, len(orig)) klon := make(I64, len(orig))
for v := range orig { for v := range orig {
klon.Add(v) klon.Add(v)
} }
...@@ -149,7 +149,7 @@ func (orig SetI64) Clone() SetI64 { ...@@ -149,7 +149,7 @@ func (orig SetI64) Clone() SetI64 {
// -------- // --------
func (s SetI64) SortedElements() []int64 { func (s I64) SortedElements() []int64 {
ev := s.Elements() ev := s.Elements()
sort.Slice(ev, func(i, j int) bool { sort.Slice(ev, func(i, j int) bool {
return ev[i] < ev[j] return ev[i] < ev[j]
...@@ -157,7 +157,7 @@ func (s SetI64) SortedElements() []int64 { ...@@ -157,7 +157,7 @@ func (s SetI64) SortedElements() []int64 {
return ev return ev
} }
func (s SetI64) String() string { func (s I64) String() string {
ev := s.SortedElements() ev := s.SortedElements()
strv := make([]string, len(ev)) strv := make([]string, len(ev))
for i, v := range ev { for i, v := range ev {
......
...@@ -27,35 +27,35 @@ import ( ...@@ -27,35 +27,35 @@ import (
"strings" "strings"
) )
// SetOid is a set of _Oid. // Oid is a set of _Oid.
type SetOid map[_Oid]struct{} type Oid map[_Oid]struct{}
// Add adds v to the set. // Add adds v to the set.
func (s SetOid) Add(v _Oid) { func (s Oid) Add(v _Oid) {
s[v] = struct{}{} s[v] = struct{}{}
} }
// Del removes v from the set. // Del removes v from the set.
// it is noop if v was not in the set. // it is noop if v was not in the set.
func (s SetOid) Del(v _Oid) { func (s Oid) Del(v _Oid) {
delete(s, v) delete(s, v)
} }
// Has checks whether the set contains v. // Has checks whether the set contains v.
func (s SetOid) Has(v _Oid) bool { func (s Oid) Has(v _Oid) bool {
_, ok := s[v] _, ok := s[v]
return ok return ok
} }
// Update adds t values to s. // Update adds t values to s.
func (s SetOid) Update(t SetOid) { func (s Oid) Update(t Oid) {
for v := range t { for v := range t {
s.Add(v) s.Add(v)
} }
} }
// Elements returns all elements of set as slice. // Elements returns all elements of set as slice.
func (s SetOid) Elements() []_Oid { func (s Oid) Elements() []_Oid {
ev := make([]_Oid, len(s)) ev := make([]_Oid, len(s))
i := 0 i := 0
for e := range s { for e := range s {
...@@ -66,14 +66,14 @@ func (s SetOid) Elements() []_Oid { ...@@ -66,14 +66,14 @@ func (s SetOid) Elements() []_Oid {
} }
// Union returns s ∪ t // Union returns s ∪ t
func (s SetOid) Union(t SetOid) SetOid { func (s Oid) Union(t Oid) Oid {
// l = max(len(s), len(t)) // l = max(len(s), len(t))
l := len(s) l := len(s)
if lt := len(t); lt > l { if lt := len(t); lt > l {
l = lt l = lt
} }
u := make(SetOid, l) u := make(Oid, l)
for v := range s { for v := range s {
u.Add(v) u.Add(v)
...@@ -85,8 +85,8 @@ func (s SetOid) Union(t SetOid) SetOid { ...@@ -85,8 +85,8 @@ func (s SetOid) Union(t SetOid) SetOid {
} }
// Intersection returns s ∩ t // Intersection returns s ∩ t
func (s SetOid) Intersection(t SetOid) SetOid { func (s Oid) Intersection(t Oid) Oid {
i := SetOid{} i := Oid{}
for v := range s { for v := range s {
if t.Has(v) { if t.Has(v) {
i.Add(v) i.Add(v)
...@@ -96,8 +96,8 @@ func (s SetOid) Intersection(t SetOid) SetOid { ...@@ -96,8 +96,8 @@ func (s SetOid) Intersection(t SetOid) SetOid {
} }
// Difference returns s\t. // Difference returns s\t.
func (s SetOid) Difference(t SetOid) SetOid { func (s Oid) Difference(t Oid) Oid {
d := SetOid{} d := Oid{}
for v := range s { for v := range s {
if !t.Has(v) { if !t.Has(v) {
d.Add(v) d.Add(v)
...@@ -107,8 +107,8 @@ func (s SetOid) Difference(t SetOid) SetOid { ...@@ -107,8 +107,8 @@ func (s SetOid) Difference(t SetOid) SetOid {
} }
// SymmetricDifference returns s Δ t. // SymmetricDifference returns s Δ t.
func (s SetOid) SymmetricDifference(t SetOid) SetOid { func (s Oid) SymmetricDifference(t Oid) Oid {
d := SetOid{} d := Oid{}
for v := range s { for v := range s {
if !t.Has(v) { if !t.Has(v) {
d.Add(v) d.Add(v)
...@@ -123,7 +123,7 @@ func (s SetOid) SymmetricDifference(t SetOid) SetOid { ...@@ -123,7 +123,7 @@ func (s SetOid) SymmetricDifference(t SetOid) SetOid {
} }
// Equal returns whether a == b. // Equal returns whether a == b.
func (a SetOid) Equal(b SetOid) bool { func (a Oid) Equal(b Oid) bool {
if len(a) != len(b) { if len(a) != len(b) {
return false return false
} }
...@@ -139,8 +139,8 @@ func (a SetOid) Equal(b SetOid) bool { ...@@ -139,8 +139,8 @@ func (a SetOid) Equal(b SetOid) bool {
} }
// Clone returns copy of the set. // Clone returns copy of the set.
func (orig SetOid) Clone() SetOid { func (orig Oid) Clone() Oid {
klon := make(SetOid, len(orig)) klon := make(Oid, len(orig))
for v := range orig { for v := range orig {
klon.Add(v) klon.Add(v)
} }
...@@ -149,7 +149,7 @@ func (orig SetOid) Clone() SetOid { ...@@ -149,7 +149,7 @@ func (orig SetOid) Clone() SetOid {
// -------- // --------
func (s SetOid) SortedElements() []_Oid { func (s Oid) SortedElements() []_Oid {
ev := s.Elements() ev := s.Elements()
sort.Slice(ev, func(i, j int) bool { sort.Slice(ev, func(i, j int) bool {
return ev[i] < ev[j] return ev[i] < ev[j]
...@@ -157,7 +157,7 @@ func (s SetOid) SortedElements() []_Oid { ...@@ -157,7 +157,7 @@ func (s SetOid) SortedElements() []_Oid {
return ev return ev
} }
func (s SetOid) String() string { func (s Oid) String() string {
ev := s.SortedElements() ev := s.SortedElements()
strv := make([]string, len(ev)) strv := make([]string, len(ev))
for i, v := range ev { for i, v := range ev {
......
...@@ -27,35 +27,35 @@ import ( ...@@ -27,35 +27,35 @@ import (
"strings" "strings"
) )
// SetStr is a set of string. // Str is a set of string.
type SetStr map[string]struct{} type Str map[string]struct{}
// Add adds v to the set. // Add adds v to the set.
func (s SetStr) Add(v string) { func (s Str) Add(v string) {
s[v] = struct{}{} s[v] = struct{}{}
} }
// Del removes v from the set. // Del removes v from the set.
// it is noop if v was not in the set. // it is noop if v was not in the set.
func (s SetStr) Del(v string) { func (s Str) Del(v string) {
delete(s, v) delete(s, v)
} }
// Has checks whether the set contains v. // Has checks whether the set contains v.
func (s SetStr) Has(v string) bool { func (s Str) Has(v string) bool {
_, ok := s[v] _, ok := s[v]
return ok return ok
} }
// Update adds t values to s. // Update adds t values to s.
func (s SetStr) Update(t SetStr) { func (s Str) Update(t Str) {
for v := range t { for v := range t {
s.Add(v) s.Add(v)
} }
} }
// Elements returns all elements of set as slice. // Elements returns all elements of set as slice.
func (s SetStr) Elements() []string { func (s Str) Elements() []string {
ev := make([]string, len(s)) ev := make([]string, len(s))
i := 0 i := 0
for e := range s { for e := range s {
...@@ -66,14 +66,14 @@ func (s SetStr) Elements() []string { ...@@ -66,14 +66,14 @@ func (s SetStr) Elements() []string {
} }
// Union returns s ∪ t // Union returns s ∪ t
func (s SetStr) Union(t SetStr) SetStr { func (s Str) Union(t Str) Str {
// l = max(len(s), len(t)) // l = max(len(s), len(t))
l := len(s) l := len(s)
if lt := len(t); lt > l { if lt := len(t); lt > l {
l = lt l = lt
} }
u := make(SetStr, l) u := make(Str, l)
for v := range s { for v := range s {
u.Add(v) u.Add(v)
...@@ -85,8 +85,8 @@ func (s SetStr) Union(t SetStr) SetStr { ...@@ -85,8 +85,8 @@ func (s SetStr) Union(t SetStr) SetStr {
} }
// Intersection returns s ∩ t // Intersection returns s ∩ t
func (s SetStr) Intersection(t SetStr) SetStr { func (s Str) Intersection(t Str) Str {
i := SetStr{} i := Str{}
for v := range s { for v := range s {
if t.Has(v) { if t.Has(v) {
i.Add(v) i.Add(v)
...@@ -96,8 +96,8 @@ func (s SetStr) Intersection(t SetStr) SetStr { ...@@ -96,8 +96,8 @@ func (s SetStr) Intersection(t SetStr) SetStr {
} }
// Difference returns s\t. // Difference returns s\t.
func (s SetStr) Difference(t SetStr) SetStr { func (s Str) Difference(t Str) Str {
d := SetStr{} d := Str{}
for v := range s { for v := range s {
if !t.Has(v) { if !t.Has(v) {
d.Add(v) d.Add(v)
...@@ -107,8 +107,8 @@ func (s SetStr) Difference(t SetStr) SetStr { ...@@ -107,8 +107,8 @@ func (s SetStr) Difference(t SetStr) SetStr {
} }
// SymmetricDifference returns s Δ t. // SymmetricDifference returns s Δ t.
func (s SetStr) SymmetricDifference(t SetStr) SetStr { func (s Str) SymmetricDifference(t Str) Str {
d := SetStr{} d := Str{}
for v := range s { for v := range s {
if !t.Has(v) { if !t.Has(v) {
d.Add(v) d.Add(v)
...@@ -123,7 +123,7 @@ func (s SetStr) SymmetricDifference(t SetStr) SetStr { ...@@ -123,7 +123,7 @@ func (s SetStr) SymmetricDifference(t SetStr) SetStr {
} }
// Equal returns whether a == b. // Equal returns whether a == b.
func (a SetStr) Equal(b SetStr) bool { func (a Str) Equal(b Str) bool {
if len(a) != len(b) { if len(a) != len(b) {
return false return false
} }
...@@ -139,8 +139,8 @@ func (a SetStr) Equal(b SetStr) bool { ...@@ -139,8 +139,8 @@ func (a SetStr) Equal(b SetStr) bool {
} }
// Clone returns copy of the set. // Clone returns copy of the set.
func (orig SetStr) Clone() SetStr { func (orig Str) Clone() Str {
klon := make(SetStr, len(orig)) klon := make(Str, len(orig))
for v := range orig { for v := range orig {
klon.Add(v) klon.Add(v)
} }
...@@ -149,7 +149,7 @@ func (orig SetStr) Clone() SetStr { ...@@ -149,7 +149,7 @@ func (orig SetStr) Clone() SetStr {
// -------- // --------
func (s SetStr) SortedElements() []string { func (s Str) SortedElements() []string {
ev := s.Elements() ev := s.Elements()
sort.Slice(ev, func(i, j int) bool { sort.Slice(ev, func(i, j int) bool {
return ev[i] < ev[j] return ev[i] < ev[j]
...@@ -157,7 +157,7 @@ func (s SetStr) SortedElements() []string { ...@@ -157,7 +157,7 @@ func (s SetStr) SortedElements() []string {
return ev return ev
} }
func (s SetStr) String() string { func (s Str) String() string {
ev := s.SortedElements() ev := s.SortedElements()
strv := make([]string, len(ev)) strv := make([]string, len(ev))
for i, v := range ev { for i, v := range ev {
......
...@@ -27,35 +27,35 @@ import ( ...@@ -27,35 +27,35 @@ import (
"strings" "strings"
) )
// SetTid is a set of _Tid. // Tid is a set of _Tid.
type SetTid map[_Tid]struct{} type Tid map[_Tid]struct{}
// Add adds v to the set. // Add adds v to the set.
func (s SetTid) Add(v _Tid) { func (s Tid) Add(v _Tid) {
s[v] = struct{}{} s[v] = struct{}{}
} }
// Del removes v from the set. // Del removes v from the set.
// it is noop if v was not in the set. // it is noop if v was not in the set.
func (s SetTid) Del(v _Tid) { func (s Tid) Del(v _Tid) {
delete(s, v) delete(s, v)
} }
// Has checks whether the set contains v. // Has checks whether the set contains v.
func (s SetTid) Has(v _Tid) bool { func (s Tid) Has(v _Tid) bool {
_, ok := s[v] _, ok := s[v]
return ok return ok
} }
// Update adds t values to s. // Update adds t values to s.
func (s SetTid) Update(t SetTid) { func (s Tid) Update(t Tid) {
for v := range t { for v := range t {
s.Add(v) s.Add(v)
} }
} }
// Elements returns all elements of set as slice. // Elements returns all elements of set as slice.
func (s SetTid) Elements() []_Tid { func (s Tid) Elements() []_Tid {
ev := make([]_Tid, len(s)) ev := make([]_Tid, len(s))
i := 0 i := 0
for e := range s { for e := range s {
...@@ -66,14 +66,14 @@ func (s SetTid) Elements() []_Tid { ...@@ -66,14 +66,14 @@ func (s SetTid) Elements() []_Tid {
} }
// Union returns s ∪ t // Union returns s ∪ t
func (s SetTid) Union(t SetTid) SetTid { func (s Tid) Union(t Tid) Tid {
// l = max(len(s), len(t)) // l = max(len(s), len(t))
l := len(s) l := len(s)
if lt := len(t); lt > l { if lt := len(t); lt > l {
l = lt l = lt
} }
u := make(SetTid, l) u := make(Tid, l)
for v := range s { for v := range s {
u.Add(v) u.Add(v)
...@@ -85,8 +85,8 @@ func (s SetTid) Union(t SetTid) SetTid { ...@@ -85,8 +85,8 @@ func (s SetTid) Union(t SetTid) SetTid {
} }
// Intersection returns s ∩ t // Intersection returns s ∩ t
func (s SetTid) Intersection(t SetTid) SetTid { func (s Tid) Intersection(t Tid) Tid {
i := SetTid{} i := Tid{}
for v := range s { for v := range s {
if t.Has(v) { if t.Has(v) {
i.Add(v) i.Add(v)
...@@ -96,8 +96,8 @@ func (s SetTid) Intersection(t SetTid) SetTid { ...@@ -96,8 +96,8 @@ func (s SetTid) Intersection(t SetTid) SetTid {
} }
// Difference returns s\t. // Difference returns s\t.
func (s SetTid) Difference(t SetTid) SetTid { func (s Tid) Difference(t Tid) Tid {
d := SetTid{} d := Tid{}
for v := range s { for v := range s {
if !t.Has(v) { if !t.Has(v) {
d.Add(v) d.Add(v)
...@@ -107,8 +107,8 @@ func (s SetTid) Difference(t SetTid) SetTid { ...@@ -107,8 +107,8 @@ func (s SetTid) Difference(t SetTid) SetTid {
} }
// SymmetricDifference returns s Δ t. // SymmetricDifference returns s Δ t.
func (s SetTid) SymmetricDifference(t SetTid) SetTid { func (s Tid) SymmetricDifference(t Tid) Tid {
d := SetTid{} d := Tid{}
for v := range s { for v := range s {
if !t.Has(v) { if !t.Has(v) {
d.Add(v) d.Add(v)
...@@ -123,7 +123,7 @@ func (s SetTid) SymmetricDifference(t SetTid) SetTid { ...@@ -123,7 +123,7 @@ func (s SetTid) SymmetricDifference(t SetTid) SetTid {
} }
// Equal returns whether a == b. // Equal returns whether a == b.
func (a SetTid) Equal(b SetTid) bool { func (a Tid) Equal(b Tid) bool {
if len(a) != len(b) { if len(a) != len(b) {
return false return false
} }
...@@ -139,8 +139,8 @@ func (a SetTid) Equal(b SetTid) bool { ...@@ -139,8 +139,8 @@ func (a SetTid) Equal(b SetTid) bool {
} }
// Clone returns copy of the set. // Clone returns copy of the set.
func (orig SetTid) Clone() SetTid { func (orig Tid) Clone() Tid {
klon := make(SetTid, len(orig)) klon := make(Tid, len(orig))
for v := range orig { for v := range orig {
klon.Add(v) klon.Add(v)
} }
...@@ -149,7 +149,7 @@ func (orig SetTid) Clone() SetTid { ...@@ -149,7 +149,7 @@ func (orig SetTid) Clone() SetTid {
// -------- // --------
func (s SetTid) SortedElements() []_Tid { func (s Tid) SortedElements() []_Tid {
ev := s.Elements() ev := s.Elements()
sort.Slice(ev, func(i, j int) bool { sort.Slice(ev, func(i, j int) bool {
return ev[i] < ev[j] return ev[i] < ev[j]
...@@ -157,7 +157,7 @@ func (s SetTid) SortedElements() []_Tid { ...@@ -157,7 +157,7 @@ func (s SetTid) SortedElements() []_Tid {
return ev return ev
} }
func (s SetTid) String() string { func (s Tid) String() string {
ev := s.SortedElements() ev := s.SortedElements()
strv := make([]string, len(ev)) strv := make([]string, len(ev))
for i, v := range ev { for i, v := range ev {
......
...@@ -363,12 +363,12 @@ func (S PPTreeSubSet) verify() { ...@@ -363,12 +363,12 @@ func (S PPTreeSubSet) verify() {
}() }()
// recompute {} oid -> children and verify .nchild against it // recompute {} oid -> children and verify .nchild against it
children := make(map[zodb.Oid]SetOid, len(S)) children := make(map[zodb.Oid]setOid, len(S))
for oid, t := range S { for oid, t := range S {
if t.parent != zodb.InvalidOid { if t.parent != zodb.InvalidOid {
cc, ok := children[t.parent] cc, ok := children[t.parent]
if !ok { if !ok {
cc = make(SetOid, 1) cc = make(setOid, 1)
children[t.parent] = cc children[t.parent] = cc
} }
cc.Add(oid) cc.Add(oid)
......
...@@ -113,10 +113,10 @@ func (δv ΔValue) String() string { ...@@ -113,10 +113,10 @@ func (δv ΔValue) String() string {
// for example for e.g. t₀->t₁->b₂ if δZ/T={t₀ b₂} -> δZ/TC=δZ/T+{t₁} // for example for e.g. t₀->t₁->b₂ if δZ/T={t₀ b₂} -> δZ/TC=δZ/T+{t₁}
// //
// δtopsByRoot = {} root -> {top changed nodes in that tree} // δtopsByRoot = {} root -> {top changed nodes in that tree}
func δZConnectTracked(δZv []zodb.Oid, T PPTreeSubSet) (δZTC SetOid, δtopsByRoot map[zodb.Oid]SetOid) { func δZConnectTracked(δZv []zodb.Oid, T PPTreeSubSet) (δZTC setOid, δtopsByRoot map[zodb.Oid]setOid) {
δZ := SetOid{}; for _, δ := range δZv { δZ.Add(δ) } δZ := setOid{}; for _, δ := range δZv { δZ.Add(δ) }
δZTC = SetOid{} δZTC = setOid{}
δtopsByRoot = map[zodb.Oid]SetOid{} δtopsByRoot = map[zodb.Oid]setOid{}
for δ := range δZ { for δ := range δZ {
track, ok := T[δ] track, ok := T[δ]
...@@ -138,7 +138,7 @@ func δZConnectTracked(δZv []zodb.Oid, T PPTreeSubSet) (δZTC SetOid, δtopsByR ...@@ -138,7 +138,7 @@ func δZConnectTracked(δZv []zodb.Oid, T PPTreeSubSet) (δZTC SetOid, δtopsByR
root := node root := node
δtops, ok := δtopsByRoot[root] δtops, ok := δtopsByRoot[root]
if !ok { if !ok {
δtops = SetOid{} δtops = setOid{}
δtopsByRoot[root] = δtops δtopsByRoot[root] = δtops
} }
δtops.Add(δ) δtops.Add(δ)
...@@ -338,7 +338,7 @@ func (rs rangeSplit) String() string { ...@@ -338,7 +338,7 @@ func (rs rangeSplit) String() string {
// δtops is set of top nodes for changed subtrees. // δtops is set of top nodes for changed subtrees.
// δZTC is connected(δZ/T) - connected closure for subset of δZ(old..new) that // δZTC is connected(δZ/T) - connected closure for subset of δZ(old..new) that
// touches tracked nodes of T. // touches tracked nodes of T.
func treediff(ctx context.Context, root zodb.Oid, δtops SetOid, δZTC SetOid, trackSet PPTreeSubSet, zconnOld, zconnNew *zodb.Connection) (δT map[Key]ΔValue, δtrack *ΔPPTreeSubSet, δtkeycov *RangedKeySet, err error) { func treediff(ctx context.Context, root zodb.Oid, δtops setOid, δZTC setOid, trackSet PPTreeSubSet, zconnOld, zconnNew *zodb.Connection) (δT map[Key]ΔValue, δtrack *ΔPPTreeSubSet, δtkeycov *RangedKeySet, err error) {
defer xerr.Contextf(&err, "treediff %s..%s %s", zconnOld.At(), zconnNew.At(), root) defer xerr.Contextf(&err, "treediff %s..%s %s", zconnOld.At(), zconnNew.At(), root)
δT = map[Key]ΔValue{} δT = map[Key]ΔValue{}
...@@ -401,7 +401,7 @@ func treediff(ctx context.Context, root zodb.Oid, δtops SetOid, δZTC SetOid, t ...@@ -401,7 +401,7 @@ func treediff(ctx context.Context, root zodb.Oid, δtops SetOid, δZTC SetOid, t
// consistent with b (= a + δ). // consistent with b (= a + δ).
// //
// δtkeycov represents how δtrack grows (always grows) tracking set key coverage. // δtkeycov represents how δtrack grows (always grows) tracking set key coverage.
func diffX(ctx context.Context, a, b Node, δZTC SetOid, trackSet PPTreeSubSet) (δ map[Key]ΔValue, δtrack *ΔPPTreeSubSet, δtkeycov *RangedKeySet, err error) { func diffX(ctx context.Context, a, b Node, δZTC setOid, trackSet PPTreeSubSet) (δ map[Key]ΔValue, δtrack *ΔPPTreeSubSet, δtkeycov *RangedKeySet, err error) {
if a==nil && b==nil { if a==nil && b==nil {
panic("BUG: both a & b == nil") // XXX -> not a bug e.g. for `ø ø T` sequence? panic("BUG: both a & b == nil") // XXX -> not a bug e.g. for `ø ø T` sequence?
} }
...@@ -452,7 +452,7 @@ func diffX(ctx context.Context, a, b Node, δZTC SetOid, trackSet PPTreeSubSet) ...@@ -452,7 +452,7 @@ func diffX(ctx context.Context, a, b Node, δZTC SetOid, trackSet PPTreeSubSet)
// //
// a, b point to top of subtrees @old and @new revisions. // a, b point to top of subtrees @old and @new revisions.
// δZTC is connected set of objects covering δZT (objects changed in this tree in old..new). // δZTC is connected set of objects covering δZT (objects changed in this tree in old..new).
func diffT(ctx context.Context, A, B *Tree, δZTC SetOid, trackSet PPTreeSubSet) (δ map[Key]ΔValue, δtrack *ΔPPTreeSubSet, δtkeycov *RangedKeySet, err error) { func diffT(ctx context.Context, A, B *Tree, δZTC setOid, trackSet PPTreeSubSet) (δ map[Key]ΔValue, δtrack *ΔPPTreeSubSet, δtkeycov *RangedKeySet, err error) {
tracefDiff(" diffT %s %s\n", xidOf(A), xidOf(B)) tracefDiff(" diffT %s %s\n", xidOf(A), xidOf(B))
defer xerr.Contextf(&err, "diffT %s %s", xidOf(A), xidOf(B)) defer xerr.Contextf(&err, "diffT %s %s", xidOf(A), xidOf(B))
......
...@@ -30,9 +30,9 @@ const KeyMin Key = math.MinInt64 ...@@ -30,9 +30,9 @@ const KeyMin Key = math.MinInt64
type Value = zodb.Oid type Value = zodb.Oid
const VDEL = zodb.InvalidOid const VDEL = zodb.InvalidOid
type SetKey = set.SetI64 type setKey = set.I64
type SetOid = set.SetOid type setOid = set.Oid
type SetTid = set.SetTid type setTid = set.Tid
......
...@@ -99,7 +99,7 @@ type ΔBtail struct { ...@@ -99,7 +99,7 @@ type ΔBtail struct {
trackSet PPTreeSubSet trackSet PPTreeSubSet
// set of trees for which .trackNew is non-empty // set of trees for which .trackNew is non-empty
trackNewRoots SetOid trackNewRoots setOid
// handle to make connections to access database. // handle to make connections to access database.
// TODO allow client to optionally provide zconnOld/zconnNew on e.g. Update() // TODO allow client to optionally provide zconnOld/zconnNew on e.g. Update()
...@@ -129,7 +129,7 @@ type ΔTtail struct { ...@@ -129,7 +129,7 @@ type ΔTtail struct {
// It describes which trees were changed, but does not provide δkv details for changed trees. // It describes which trees were changed, but does not provide δkv details for changed trees.
type ΔBroots struct { type ΔBroots struct {
Rev zodb.Tid Rev zodb.Tid
ΔRoots SetOid // which roots changed in this revision ΔRoots setOid // which roots changed in this revision
} }
// ΔB represents a change in BTrees space. // ΔB represents a change in BTrees space.
...@@ -159,7 +159,7 @@ func NewΔBtail(at0 zodb.Tid, db *zodb.DB) *ΔBtail { ...@@ -159,7 +159,7 @@ func NewΔBtail(at0 zodb.Tid, db *zodb.DB) *ΔBtail {
vδBroots: nil, vδBroots: nil,
vδTbyRoot: map[zodb.Oid]*ΔTtail{}, vδTbyRoot: map[zodb.Oid]*ΔTtail{},
trackSet: PPTreeSubSet{}, trackSet: PPTreeSubSet{},
trackNewRoots: SetOid{}, trackNewRoots: setOid{},
db: db, db: db,
} }
} }
...@@ -321,7 +321,7 @@ func (δBtail *ΔBtail) rebuildAll() (err error) { ...@@ -321,7 +321,7 @@ func (δBtail *ΔBtail) rebuildAll() (err error) {
δBtail.vδBroots_Update(root, δrevSet) δBtail.vδBroots_Update(root, δrevSet)
} }
δBtail.trackNewRoots = SetOid{} δBtail.trackNewRoots = setOid{}
return nil return nil
} }
...@@ -334,7 +334,7 @@ func (δBtail *ΔBtail) rebuildAll() (err error) { ...@@ -334,7 +334,7 @@ func (δBtail *ΔBtail) rebuildAll() (err error) {
// - set of revisions for which new entries in .vδT have been created. // - set of revisions for which new entries in .vδT have been created.
// //
// XXX place // XXX place
func (δTtail *ΔTtail) rebuild(root zodb.Oid, δZtail *zodb.ΔTail, db *zodb.DB) (δtrackSet PPTreeSubSet, δrevSet SetTid, err error) { func (δTtail *ΔTtail) rebuild(root zodb.Oid, δZtail *zodb.ΔTail, db *zodb.DB) (δtrackSet PPTreeSubSet, δrevSet setTid, err error) {
defer xerr.Context(&err, "ΔTtail rebuild") defer xerr.Context(&err, "ΔTtail rebuild")
// XXX locking // XXX locking
...@@ -348,7 +348,7 @@ func (δTtail *ΔTtail) rebuild(root zodb.Oid, δZtail *zodb.ΔTail, db *zodb.DB ...@@ -348,7 +348,7 @@ func (δTtail *ΔTtail) rebuild(root zodb.Oid, δZtail *zodb.ΔTail, db *zodb.DB
return nil, nil, nil return nil, nil, nil
} }
δrevSet = SetTid{} δrevSet = setTid{}
// go backwards and merge vδT <- treediff(lo..hi/trackNew) // go backwards and merge vδT <- treediff(lo..hi/trackNew)
vδZ := δZtail.Data() vδZ := δZtail.Data()
...@@ -474,7 +474,7 @@ func (δTtail *ΔTtail) rebuild1(atPrev zodb.Tid, δZ zodb.ΔRevEntry, trackNew ...@@ -474,7 +474,7 @@ func (δTtail *ΔTtail) rebuild1(atPrev zodb.Tid, δZ zodb.ΔRevEntry, trackNew
panicf("BUG: δtopsByRoot has > 1 entries: %v\ntrackNew: %v\nδZ: %v", δtopsByRoot, trackNew, δZ) panicf("BUG: δtopsByRoot has > 1 entries: %v\ntrackNew: %v\nδZ: %v", δtopsByRoot, trackNew, δZ)
} }
var root zodb.Oid var root zodb.Oid
var δtops SetOid var δtops setOid
for root_, δtops_ := range δtopsByRoot { for root_, δtops_ := range δtopsByRoot {
root = root_ root = root_
δtops = δtops_ δtops = δtops_
...@@ -594,7 +594,7 @@ func (δBtail *ΔBtail) Update(δZ *zodb.EventCommit) (_ ΔB, err error) { ...@@ -594,7 +594,7 @@ func (δBtail *ΔBtail) Update(δZ *zodb.EventCommit) (_ ΔB, err error) {
} }
// vδBroots += δB // vδBroots += δB
δroots := SetOid{} δroots := setOid{}
for root := range δB.ΔByRoot { for root := range δB.ΔByRoot {
δroots.Add(root) δroots.Add(root)
} }
...@@ -681,7 +681,7 @@ func (δBtail *ΔBtail) _Update1(δZ *zodb.EventCommit) (δB1 _ΔBUpdate1, err e ...@@ -681,7 +681,7 @@ func (δBtail *ΔBtail) _Update1(δZ *zodb.EventCommit) (δB1 _ΔBUpdate1, err e
// changed entries with δrevSet revisions. // changed entries with δrevSet revisions.
// //
// XXX place TODO δrevSet -> []rev↑ // XXX place TODO δrevSet -> []rev↑
func (δBtail *ΔBtail) vδBroots_Update(root zodb.Oid, δrevSet SetTid) { func (δBtail *ΔBtail) vδBroots_Update(root zodb.Oid, δrevSet setTid) {
// XXX locking // XXX locking
for rev := range δrevSet { for rev := range δrevSet {
l := len(δBtail.vδBroots) l := len(δBtail.vδBroots)
...@@ -689,7 +689,7 @@ func (δBtail *ΔBtail) vδBroots_Update(root zodb.Oid, δrevSet SetTid) { ...@@ -689,7 +689,7 @@ func (δBtail *ΔBtail) vδBroots_Update(root zodb.Oid, δrevSet SetTid) {
return rev <= δBtail.vδBroots[k].Rev return rev <= δBtail.vδBroots[k].Rev
}) })
if j == l || δBtail.vδBroots[j].Rev != rev { if j == l || δBtail.vδBroots[j].Rev != rev {
δBroots := ΔBroots{Rev: rev, ΔRoots: SetOid{}} δBroots := ΔBroots{Rev: rev, ΔRoots: setOid{}}
// insert(@j, δBroots) // insert(@j, δBroots)
δBtail.vδBroots = append(δBtail.vδBroots[:j], δBtail.vδBroots = append(δBtail.vδBroots[:j],
append([]ΔBroots{δBroots}, append([]ΔBroots{δBroots},
...@@ -708,7 +708,7 @@ func (δBtail *ΔBtail) ForgetPast(revCut zodb.Tid) { ...@@ -708,7 +708,7 @@ func (δBtail *ΔBtail) ForgetPast(revCut zodb.Tid) {
// go through vδBroots till revcut -> find which trees to trim -> trim ΔTtails. // go through vδBroots till revcut -> find which trees to trim -> trim ΔTtails.
totrim := SetOid{} // roots whose ΔTtail has changes ≤ revCut totrim := setOid{} // roots whose ΔTtail has changes ≤ revCut
icut := 0 icut := 0
for ; icut < len(δBtail.vδBroots); icut++ { for ; icut < len(δBtail.vδBroots); icut++ {
δBroots := δBtail.vδBroots[icut] δBroots := δBtail.vδBroots[icut]
......
This diff is collapsed.
...@@ -33,8 +33,8 @@ import ( ...@@ -33,8 +33,8 @@ import (
"lab.nexedi.com/nexedi/wendelin.core/wcfs/internal/xzodb" "lab.nexedi.com/nexedi/wendelin.core/wcfs/internal/xzodb"
) )
type SetI64 = set.SetI64 type setI64 = set.I64
type SetOid = set.SetOid type setOid = set.Oid
// ΔFtail represents tail of revisional changes to files. // ΔFtail represents tail of revisional changes to files.
// //
...@@ -75,9 +75,9 @@ type SetOid = set.SetOid ...@@ -75,9 +75,9 @@ type SetOid = set.SetOid
type ΔFtail struct { type ΔFtail struct {
// ΔFtail merges ΔBtail with history of ZBlk // ΔFtail merges ΔBtail with history of ZBlk
δBtail *xbtree.ΔBtail δBtail *xbtree.ΔBtail
fileIdx map[zodb.Oid]SetOid // tree-root -> {} ZBigFile<oid> as of @head fileIdx map[zodb.Oid]setOid // tree-root -> {} ZBigFile<oid> as of @head
trackSetZFile SetOid // set of tracked ZBigFiles as of @head trackSetZFile setOid // set of tracked ZBigFiles as of @head
trackSetZBlk map[zodb.Oid]*zblkTrack // zblk -> {} root -> {}blk as of @head trackSetZBlk map[zodb.Oid]*zblkTrack // zblk -> {} root -> {}blk as of @head
// XXX kill // XXX kill
///* ///*
...@@ -95,8 +95,8 @@ type ΔFtail struct { ...@@ -95,8 +95,8 @@ type ΔFtail struct {
// zblkTrack keeps information in which root/blocks ZBlk is present as of @head. // zblkTrack keeps information in which root/blocks ZBlk is present as of @head.
type zblkTrack struct { type zblkTrack struct {
// inroot map[zodb.Oid]SetI64 // {} root -> {}blk XXX later switch to this // inroot map[zodb.Oid]setI64 // {} root -> {}blk XXX later switch to this
infile map[zodb.Oid]SetI64 // {} foid -> {}blk infile map[zodb.Oid]setI64 // {} foid -> {}blk
} }
// ΔF represents a change in files space. // ΔF represents a change in files space.
...@@ -108,7 +108,7 @@ type ΔF struct { ...@@ -108,7 +108,7 @@ type ΔF struct {
// ΔFile represents a change to one file. // ΔFile represents a change to one file.
type ΔFile struct { type ΔFile struct {
Rev zodb.Tid Rev zodb.Tid
Blocks SetI64 // changed blocks XXX -> ΔBlocks ? Blocks setI64 // changed blocks XXX -> ΔBlocks ?
Size bool // whether file size changed XXX -> ΔSize? Size bool // whether file size changed XXX -> ΔSize?
} }
...@@ -123,8 +123,8 @@ type ΔFile struct { ...@@ -123,8 +123,8 @@ type ΔFile struct {
func NewΔFtail(at0 zodb.Tid, db *zodb.DB) *ΔFtail { func NewΔFtail(at0 zodb.Tid, db *zodb.DB) *ΔFtail {
return &ΔFtail{ return &ΔFtail{
δBtail: xbtree.NewΔBtail(at0, db), δBtail: xbtree.NewΔBtail(at0, db),
fileIdx: map[zodb.Oid]SetOid{}, fileIdx: map[zodb.Oid]setOid{},
trackSetZFile: SetOid{}, trackSetZFile: setOid{},
trackSetZBlk: map[zodb.Oid]*zblkTrack{}, trackSetZBlk: map[zodb.Oid]*zblkTrack{},
trackNew: map[zodb.Oid]map[zodb.Oid]*zblkTrack{}, trackNew: map[zodb.Oid]map[zodb.Oid]*zblkTrack{},
} }
...@@ -163,7 +163,7 @@ func (δFtail *ΔFtail) Track(file *ZBigFile, blk int64, path []btree.LONode, zb ...@@ -163,7 +163,7 @@ func (δFtail *ΔFtail) Track(file *ZBigFile, blk int64, path []btree.LONode, zb
root := path[0].(*btree.LOBTree) root := path[0].(*btree.LOBTree)
files, ok := δFtail.fileIdx[root.POid()] files, ok := δFtail.fileIdx[root.POid()]
if !ok { if !ok {
files = SetOid{} files = setOid{}
δFtail.fileIdx[root.POid()] = files δFtail.fileIdx[root.POid()] = files
} }
files.Add(foid) files.Add(foid)
...@@ -181,9 +181,9 @@ func (δFtail *ΔFtail) Track(file *ZBigFile, blk int64, path []btree.LONode, zb ...@@ -181,9 +181,9 @@ func (δFtail *ΔFtail) Track(file *ZBigFile, blk int64, path []btree.LONode, zb
blocks, ok := zt.infile[foid] blocks, ok := zt.infile[foid]
if !ok { if !ok {
blocks = make(SetI64, 1) blocks = make(setI64, 1)
if zt.infile == nil { if zt.infile == nil {
zt.infile = make(map[zodb.Oid]SetI64) zt.infile = make(map[zodb.Oid]setI64)
} }
zt.infile[foid] = blocks zt.infile[foid] = blocks
} }
...@@ -243,7 +243,7 @@ func (δFtail *ΔFtail) Update(δZ *zodb.EventCommit, zhead *xzodb.ZConn) (_ ΔF ...@@ -243,7 +243,7 @@ func (δFtail *ΔFtail) Update(δZ *zodb.EventCommit, zhead *xzodb.ZConn) (_ ΔF
for file := range files { for file := range files {
δfile, ok := δF.ByFile[file] δfile, ok := δF.ByFile[file]
if !ok { if !ok {
δfile = &ΔFile{Rev: δF.Rev, Blocks: make(SetI64)} δfile = &ΔFile{Rev: δF.Rev, Blocks: make(setI64)}
δF.ByFile[file] = δfile δF.ByFile[file] = δfile
} }
for blk /*, zblk*/ := range δt { for blk /*, zblk*/ := range δt {
...@@ -277,7 +277,7 @@ func (δFtail *ΔFtail) Update(δZ *zodb.EventCommit, zhead *xzodb.ZConn) (_ ΔF ...@@ -277,7 +277,7 @@ func (δFtail *ΔFtail) Update(δZ *zodb.EventCommit, zhead *xzodb.ZConn) (_ ΔF
for foid, blocks := range zt.infile { for foid, blocks := range zt.infile {
δfile, ok := δF.ByFile[foid] δfile, ok := δF.ByFile[foid]
if !ok { if !ok {
δfile = &ΔFile{Rev: δF.Rev, Blocks: make(SetI64)} δfile = &ΔFile{Rev: δF.Rev, Blocks: make(setI64)}
δF.ByFile[foid] = δfile δF.ByFile[foid] = δfile
} }
...@@ -328,7 +328,7 @@ func (δFtail *ΔFtail) update(file *ZBigFile) { ...@@ -328,7 +328,7 @@ func (δFtail *ΔFtail) update(file *ZBigFile) {
// XXX -> func δF.δfile(foid) ? // XXX -> func δF.δfile(foid) ?
δfile, ok := δF.ByFile[foid] δfile, ok := δF.ByFile[foid]
if !ok { if !ok {
δfile = &ΔFile{Rev: δF.Rev, Blocks: make(SetI64)} δfile = &ΔFile{Rev: δF.Rev, Blocks: make(setI64)}
δF.ByFile[foid] = δfile δF.ByFile[foid] = δfile
} }
......
...@@ -27,12 +27,12 @@ import ( ...@@ -27,12 +27,12 @@ import (
"lab.nexedi.com/nexedi/wendelin.core/wcfs/internal/set" "lab.nexedi.com/nexedi/wendelin.core/wcfs/internal/set"
) )
type SetStr = set.SetStr type setStr = set.Str
// ΔFTestEntry represents one entry in ΔFtail tests. // ΔFTestEntry represents one entry in ΔFtail tests.
type ΔFTestEntry struct { type ΔFTestEntry struct {
δblkTab map[int64]string // change in tree part {} #blk -> ZBlk<oid> δblkTab map[int64]string // change in tree part {} #blk -> ZBlk<oid>
δblkData SetStr // change to ZBlk objects δblkData setStr // change to ZBlk objects
} }
func TestΔFtail(t *testing.T) { func TestΔFtail(t *testing.T) {
...@@ -40,8 +40,8 @@ func TestΔFtail(t *testing.T) { ...@@ -40,8 +40,8 @@ func TestΔFtail(t *testing.T) {
type δT = map[int64]string type δT = map[int64]string
// δD is shorthand to create δblkData. // δD is shorthand to create δblkData.
δD := func(zblkv ...string) SetStr { δD := func(zblkv ...string) setStr {
δ := SetStr{} δ := setStr{}
for _, zblk := range zblkv { for _, zblk := range zblkv {
δ.Add(zblk) δ.Add(zblk)
} }
...@@ -58,9 +58,9 @@ func TestΔFtail(t *testing.T) { ...@@ -58,9 +58,9 @@ func TestΔFtail(t *testing.T) {
vδf := []ΔFile{} // (rev↑, {}blk) XXX +.Size? vδf := []ΔFile{} // (rev↑, {}blk) XXX +.Size?
blkTab := map[int64]string{} // #blk -> ZBlk<oid> blkTab := map[int64]string{} // #blk -> ZBlk<oid>
Zinblk := map[string]SetI64{} // ZBlk<oid> -> which #blk refer to it Zinblk := map[string]setI64{} // ZBlk<oid> -> which #blk refer to it
for _, test := range testv { for _, test := range testv {
δf := SetI64{} δf := setI64{}
for blk, zblk := range test.δblkTab { for blk, zblk := range test.δblkTab {
// rebuild blkTab/Zinblk // rebuild blkTab/Zinblk
...@@ -75,7 +75,7 @@ func TestΔFtail(t *testing.T) { ...@@ -75,7 +75,7 @@ func TestΔFtail(t *testing.T) {
blkTab[blk] = zblk blkTab[blk] = zblk
inblk, ok := Zinblk[zblk] inblk, ok := Zinblk[zblk]
if !ok { if !ok {
inblk = SetI64{} inblk = setI64{}
Zinblk[zblk] = inblk Zinblk[zblk] = inblk
} }
inblk.Add(blk) inblk.Add(blk)
......
...@@ -525,7 +525,7 @@ type ( ...@@ -525,7 +525,7 @@ type (
ZData = zdata.ZData ZData = zdata.ZData
ZBigFile = zdata.ZBigFile ZBigFile = zdata.ZBigFile
SetI64 = set.SetI64 setI64 = set.I64
) )
// Root represents root of wcfs filesystem. // Root represents root of wcfs filesystem.
...@@ -632,7 +632,7 @@ type BigFile struct { ...@@ -632,7 +632,7 @@ type BigFile struct {
// blocks that were ever read-accessed (head/ only) XXX locking by bfdir.δFmu ? // blocks that were ever read-accessed (head/ only) XXX locking by bfdir.δFmu ?
// XXX = δFtail.Tracked(f) ? // XXX = δFtail.Tracked(f) ?
accessed SetI64 accessed setI64
// inflight loadings of ZBigFile from ZODB. // inflight loadings of ZBigFile from ZODB.
// successful load results are kept here until blkdata is put into OS pagecache. // successful load results are kept here until blkdata is put into OS pagecache.
...@@ -2210,7 +2210,7 @@ func (head *Head) bigopen(ctx context.Context, oid zodb.Oid) (_ *BigFile, err er ...@@ -2210,7 +2210,7 @@ func (head *Head) bigopen(ctx context.Context, oid zodb.Oid) (_ *BigFile, err er
// FIXME: scan zfile.blktab - so that we can detect all btree changes // FIXME: scan zfile.blktab - so that we can detect all btree changes
// see "XXX building δFtail lazily ..." in notes.txt // see "XXX building δFtail lazily ..." in notes.txt
f.accessed = make(SetI64) f.accessed = make(setI64)
f.watchTab = make(map[*Watch]struct{}) f.watchTab = make(map[*Watch]struct{})
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment