本文整理汇总了Golang中github.com/syndtr/goleveldb/leveldb/iterator.NewMergedIterator函数的典型用法代码示例。如果您正苦于以下问题:Golang NewMergedIterator函数的具体用法?Golang NewMergedIterator怎么用?Golang NewMergedIterator使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewMergedIterator函数的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: newIterator
func (c *compaction) newIterator() iterator.Iterator {
s := c.s
icmp := s.cmp
level := c.level
icap := 2
if c.level == 0 {
icap = len(c.tables[0]) + 1
}
its := make([]iterator.Iterator, 0, icap)
ro := &opt.ReadOptions{
Flag: opt.RFDontFillCache,
}
if s.o.HasFlag(opt.OFParanoidCheck) {
ro.Flag |= opt.RFVerifyChecksums
}
for i, tt := range c.tables {
if len(tt) == 0 {
continue
}
if level+i == 0 {
for _, t := range tt {
its = append(its, s.tops.newIterator(t, ro))
}
} else {
it := iterator.NewIndexedIterator(tt.newIndexIterator(s.tops, icmp, ro))
its = append(its, it)
}
}
return iterator.NewMergedIterator(its, icmp)
}
开发者ID:29n,项目名称:goleveldb,代码行数:35,代码来源:session.go
示例2: newIterator
// Creates an iterator.
func (c *compaction) newIterator() iterator.Iterator {
// Creates iterator slice.
icap := len(c.tables)
if c.level == 0 {
// Special case for level-0
icap = len(c.tables[0]) + 1
}
its := make([]iterator.Iterator, 0, icap)
// Options.
ro := &opt.ReadOptions{
DontFillCache: true,
}
strict := c.s.o.GetStrict(opt.StrictIterator)
for i, tables := range c.tables {
if len(tables) == 0 {
continue
}
// Level-0 is not sorted and may overlaps each other.
if c.level+i == 0 {
for _, t := range tables {
its = append(its, c.s.tops.newIterator(t, nil, ro))
}
} else {
it := iterator.NewIndexedIterator(tables.newIndexIterator(c.s.tops, c.s.icmp, nil, ro), strict, true)
its = append(its, it)
}
}
return iterator.NewMergedIterator(its, c.s.icmp, true)
}
开发者ID:GDXN,项目名称:syncthing,代码行数:34,代码来源:session.go
示例3: newIterator
func (p *stConstructor_MergedMemDB) newIterator() iterator.Iterator {
var its []iterator.Iterator
for _, m := range p.mem {
its = append(its, m.NewIterator())
}
return iterator.NewMergedIterator(its, comparer.BytesComparer{})
}
开发者ID:29n,项目名称:goleveldb,代码行数:7,代码来源:sorted_test.go
示例4: newRawIterator
func (db *DB) newRawIterator(auxm *memDB, auxt tFiles, slice *util.Range, ro *opt.ReadOptions) iterator.Iterator {
strict := opt.GetStrict(db.s.o.Options, ro, opt.StrictReader)
em, fm := db.getMems()
v := db.s.version()
tableIts := v.getIterators(slice, ro)
n := len(tableIts) + len(auxt) + 3
its := make([]iterator.Iterator, 0, n)
if auxm != nil {
ami := auxm.NewIterator(slice)
ami.SetReleaser(&memdbReleaser{m: auxm})
its = append(its, ami)
}
for _, t := range auxt {
its = append(its, v.s.tops.newIterator(t, slice, ro))
}
emi := em.NewIterator(slice)
emi.SetReleaser(&memdbReleaser{m: em})
its = append(its, emi)
if fm != nil {
fmi := fm.NewIterator(slice)
fmi.SetReleaser(&memdbReleaser{m: fm})
its = append(its, fmi)
}
its = append(its, tableIts...)
mi := iterator.NewMergedIterator(its, db.s.icmp, strict)
mi.SetReleaser(&versionReleaser{v: v})
return mi
}
开发者ID:karalabe,项目名称:etherapis,代码行数:31,代码来源:db_iter.go
示例5: newIterator
func (c *compaction) newIterator() iterator.Iterator {
s := c.s
level := c.level
icap := 2
if c.level == 0 {
icap = len(c.tables[0]) + 1
}
its := make([]iterator.Iterator, 0, icap)
ro := &opt.ReadOptions{
DontFillCache: true,
}
strict := s.o.GetStrict(opt.StrictIterator)
for i, tt := range c.tables {
if len(tt) == 0 {
continue
}
if level+i == 0 {
for _, t := range tt {
its = append(its, s.tops.newIterator(t, nil, ro))
}
} else {
it := iterator.NewIndexedIterator(tt.newIndexIterator(s.tops, s.icmp, nil, ro), strict, true)
its = append(its, it)
}
}
return iterator.NewMergedIterator(its, s.icmp, true)
}
开发者ID:BenKoerber,项目名称:syncthing,代码行数:32,代码来源:session.go
示例6: newIterator
func (mc *stConstructor_MergedMemDB) newIterator() iterator.Iterator {
var ii []iterator.Iterator
for _, db := range mc.db {
ii = append(ii, db.NewIterator())
}
return iterator.NewMergedIterator(ii, comparer.DefaultComparer, true)
}
开发者ID:pombredanne,项目名称:goleveldb,代码行数:7,代码来源:sorted_test.go
示例7: newRawIterator
// newRawIterator return merged interators of current version, current frozen memdb
// and current memdb.
func (d *DB) newRawIterator(ro *opt.ReadOptions) iterator.Iterator {
s := d.s
mem := d.getMem()
v := s.version()
ti := v.getIterators(ro)
ii := make([]iterator.Iterator, 0, len(ti)+2)
ii = append(ii, mem.cur.NewIterator())
if mem.froze != nil {
ii = append(ii, mem.froze.NewIterator())
}
ii = append(ii, ti...)
return iterator.NewMergedIterator(ii, s.cmp)
}
开发者ID:29n,项目名称:goleveldb,代码行数:18,代码来源:db_iter.go
示例8: newRawIterator
func (db *DB) newRawIterator(slice *util.Range, ro *opt.ReadOptions) iterator.Iterator {
em, fm := db.getMems()
v := db.s.version()
ti := v.getIterators(slice, ro)
n := len(ti) + 2
i := make([]iterator.Iterator, 0, n)
i = append(i, em.NewIterator(slice))
if fm != nil {
i = append(i, fm.NewIterator(slice))
}
i = append(i, ti...)
strict := db.s.o.GetStrict(opt.StrictIterator) || ro.GetStrict(opt.StrictIterator)
mi := iterator.NewMergedIterator(i, db.s.icmp, strict)
mi.SetReleaser(&versionReleaser{v: v})
return mi
}
开发者ID:retgoat,项目名称:syncthing,代码行数:17,代码来源:db_iter.go
示例9: newRawIterator
func (db *DB) newRawIterator(ro *opt.ReadOptions) iterator.Iterator {
s := db.s
mem, frozenMem := db.getMem()
v := s.version()
tableIters := v.getIterators(ro)
iters := make([]iterator.Iterator, 0, len(tableIters)+2)
iters = append(iters, mem.NewIterator())
if frozenMem != nil {
iters = append(iters, frozenMem.NewIterator())
}
iters = append(iters, tableIters...)
strict := s.o.GetStrict(opt.StrictIterator) || ro.GetStrict(opt.StrictIterator)
mi := iterator.NewMergedIterator(iters, s.cmp, strict)
mi.SetReleaser(&versionReleaser{v: v})
return mi
}
开发者ID:pombredanne,项目名称:goleveldb,代码行数:18,代码来源:db_iter.go
示例10: newRawIterator
func (db *DB) newRawIterator(slice *util.Range, ro *opt.ReadOptions) iterator.Iterator {
em, fm := db.getMems()
v := db.s.version()
ti := v.getIterators(slice, ro)
n := len(ti) + 2
i := make([]iterator.Iterator, 0, n)
emi := em.mdb.NewIterator(slice)
emi.SetReleaser(&memdbReleaser{m: em})
i = append(i, emi)
if fm != nil {
fmi := fm.mdb.NewIterator(slice)
fmi.SetReleaser(&memdbReleaser{m: fm})
i = append(i, fmi)
}
i = append(i, ti...)
strict := opt.GetStrict(db.s.o.Options, ro, opt.StrictReader)
mi := iterator.NewMergedIterator(i, db.s.icmp, strict)
mi.SetReleaser(&versionReleaser{v: v})
return mi
}
开发者ID:CedarLogic,项目名称:go-ethereum,代码行数:21,代码来源:db_iter.go
注:本文中的github.com/syndtr/goleveldb/leveldb/iterator.NewMergedIterator函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论