// SortEntries sorts entries from c in memory and write to w in // slightly over the maxSize bytes. Returns number of entries written // and error. func SortEntries(c sstable.Cursor, maxSize uint64, w *sstable.Writer) (n int, err error) { es := Entries{} size := uint64(0) for !c.Done() && size < maxSize { e := c.Entry() c.Next() size += e.Size() es = append(es, HeapEntry{*e, nil}) } heap.Init(&es) for es.Len() > 0 { e := heap.Pop(&es) err = w.Write(e.(HeapEntry).Entry) if err != nil { return } n += 1 } err = w.Close() return }