mirror of
https://github.com/anyproto/any-sync.git
synced 2025-06-08 05:57:03 +09:00
48 lines
901 B
Go
48 lines
901 B
Go
package objecttree
|
|
|
|
type Flusher interface {
|
|
MarkNewChange(ch *Change)
|
|
FlushAfterBuild(t *objectTree) error
|
|
Flush(t *objectTree) error
|
|
}
|
|
|
|
type defaultFlusher struct {
|
|
}
|
|
|
|
func (d *defaultFlusher) MarkNewChange(ch *Change) {
|
|
}
|
|
|
|
func (d *defaultFlusher) FlushAfterBuild(t *objectTree) error {
|
|
t.tree.reduceTree()
|
|
return nil
|
|
}
|
|
|
|
func (d *defaultFlusher) Flush(t *objectTree) error {
|
|
return nil
|
|
}
|
|
|
|
func MarkNewChangeFlusher() Flusher {
|
|
return &newChangeFlusher{}
|
|
}
|
|
|
|
type newChangeFlusher struct {
|
|
newChanges []*Change
|
|
}
|
|
|
|
func (n *newChangeFlusher) MarkNewChange(ch *Change) {
|
|
ch.IsNew = true
|
|
n.newChanges = append(n.newChanges, ch)
|
|
}
|
|
|
|
func (n *newChangeFlusher) FlushAfterBuild(t *objectTree) error {
|
|
return nil
|
|
}
|
|
|
|
func (n *newChangeFlusher) Flush(t *objectTree) error {
|
|
for _, ch := range n.newChanges {
|
|
ch.IsNew = false
|
|
}
|
|
n.newChanges = n.newChanges[:0]
|
|
t.tree.reduceTree()
|
|
return nil
|
|
}
|