Commit 9cce624f authored by Kirill Smelkov's avatar Kirill Smelkov

.

parent 958ae9b4
...@@ -800,6 +800,16 @@ func diffB(ctx context.Context, a, b *Bucket) (δ map[Key]ΔValue, err error) { ...@@ -800,6 +800,16 @@ func diffB(ctx context.Context, a, b *Bucket) (δ map[Key]ΔValue, err error) {
return δ, nil return δ, nil
} }
// vOid returns OID of a value object.
// it is an error if value is not persistent object.
func vOid(xvalue interface{}) (zodb.Oid, error) {
value, ok := xvalue.(zodb.IPersistent)
if !ok {
return zodb.InvalidOid, fmt.Errorf("%T is not a persitent object", xvalue)
}
return value.POid(), nil
}
// ---- nodeInRange + rangeSplit ---- // ---- nodeInRange + rangeSplit ----
......
...@@ -60,33 +60,6 @@ type setOid = set.Oid ...@@ -60,33 +60,6 @@ type setOid = set.Oid
type setTid = set.Tid type setTid = set.Tid
// nodePathToPath converts path from []Node to []Oid.
func nodePathToPath(nodePath []Node) (path []zodb.Oid) {
// assert nodePath = Tree Tree ... Tree Bucket
l := len(nodePath)
switch {
case l == 0:
panic("empty path")
case l == 1:
// must be empty Tree
_ = nodePath[0].(*Tree)
default:
// must be Tree Tree ... Tree Bucket
for _, node := range nodePath[:l-1] {
_ = node.(*Tree)
}
_ = nodePath[l-1].(*Bucket)
}
path = make([]zodb.Oid, l)
for i, node := range nodePath {
path[i] = node.POid()
}
return path
}
// pathEqual returns whether two paths are the same. // pathEqual returns whether two paths are the same.
func pathEqual(patha, pathb []zodb.Oid) bool { func pathEqual(patha, pathb []zodb.Oid) bool {
if len(patha) != len(pathb) { if len(patha) != len(pathb) {
...@@ -110,16 +83,6 @@ func vnode(node Node) string { ...@@ -110,16 +83,6 @@ func vnode(node Node) string {
return kind + node.POid().String() return kind + node.POid().String()
} }
// vOid returns OID of a value object.
// it is an error if value is not persistent object.
func vOid(xvalue interface{}) (zodb.Oid, error) {
value, ok := xvalue.(zodb.IPersistent)
if !ok {
return zodb.InvalidOid, fmt.Errorf("%T is not a persitent object", xvalue)
}
return value.POid(), nil
}
// zgetNodeOrNil returns btree node corresponding to zconn.Get(oid) . // zgetNodeOrNil returns btree node corresponding to zconn.Get(oid) .
// if the node does not exist, (nil, ok) is returned. // if the node does not exist, (nil, ok) is returned.
func zgetNodeOrNil(ctx context.Context, zconn *zodb.Connection, oid zodb.Oid) (node Node, err error) { func zgetNodeOrNil(ctx context.Context, zconn *zodb.Connection, oid zodb.Oid) (node Node, err error) {
......
...@@ -308,6 +308,31 @@ func (δBtail *ΔBtail) Track(key Key, nodePath []Node) { ...@@ -308,6 +308,31 @@ func (δBtail *ΔBtail) Track(key Key, nodePath []Node) {
δBtail.track(key, path) δBtail.track(key, path)
} }
// nodePathToPath converts path from []Node to []Oid.
func nodePathToPath(nodePath []Node) (path []zodb.Oid) {
// assert nodePath = Tree Tree ... Tree Bucket
l := len(nodePath)
switch {
case l == 0:
panic("empty path")
case l == 1:
// must be empty Tree
_ = nodePath[0].(*Tree)
default:
// must be Tree Tree ... Tree Bucket
for _, node := range nodePath[:l-1] {
_ = node.(*Tree)
}
_ = nodePath[l-1].(*Bucket)
}
path = make([]zodb.Oid, l)
for i, node := range nodePath {
path[i] = node.POid()
}
return path
}
func (δBtail *ΔBtail) track(key Key, path []zodb.Oid) { func (δBtail *ΔBtail) track(key Key, path []zodb.Oid) {
// XXX locking // XXX locking
......
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