blob: 33848373a5d789a066a1b192334064532d046226 [file] [log] [blame]
// Package raw defines a raw interface for the Veyron store.
//
// The raw interface supports synchronizing with remote stores by transporting
// Mutations.
package raw
import (
"veyron2/storage"
"veyron2/services/watch"
)
const (
// The raw Store has Object name "<mount>/.store.raw", where <mount> is the
// Object name of the mount point.
RawStoreSuffix = ".store.raw"
)
// Mutation represents an update to an entry in the store, and contains enough
// information for a privileged service to replicate the update elsewhere.
type Mutation struct {
// ID is the key that identifies the entry.
ID storage.ID
// The version of the entry immediately before the update. For new entries,
// the PriorVersion is NoVersion.
PriorVersion storage.Version
// The version of the entry immediately after the update. For deleted entries,
// the Version is NoVersion.
Version storage.Version
// IsRoot is true if
// 1) The entry was the store root immediately before being deleted, or
// 2) The entry is the store root immediately after the update.
IsRoot bool
// Value is value stored at this entry.
Value any
// Tags specify permissions on this entry.
Tags storage.TagList
// Dir is the implicit directory of this entry, and may contain references
// to other entries in the store.
Dir []storage.DEntry
}
// Request specifies how to resume from a previous Watch call.
type Request struct {
// ResumeMarker specifies how to resume from a previous Watch call.
// See the ResumeMarker type for detailed comments.
ResumeMarker watch.ResumeMarker
}
// Store defines a raw interface for the Veyron store. Mutations can be received
// via the Watcher interface, and committed via PutMutation.
type Store interface {
// Watch returns a stream of all changes.
Watch(Req Request) stream<_, watch.ChangeBatch> error
// PutMutations atomically commits a stream of Mutations when the stream is
// closed. Mutations are not committed if the request is cancelled before
// the stream has been closed.
PutMutations() stream<Mutation, _> error
}