syncbase API: client watch (VDL only)
Watch allows a client to watch for updates in the database.
This change contains only the VDL API and implementation stubs.
The Watcher is not embedded directly from the "v.io/v23/services/watch"
package because:
- the store has a more convenient way to get the initial state: grab a
snapshot, do gets and scans and get the ResumeMarker (as a part of the
same snapshot) as a point to start
- we want to have a bit different information in a change, for example,
whether the change came from Sync.
- it is more convenient to use tuples instead of strings for table+row names.
Change-Id: Ib657dc7da2bbf857274d994ffd2d0853b07c587c
diff --git a/services/syncbase/server/nosql/database.go b/services/syncbase/server/nosql/database.go
index cb97fb9..2da519e 100644
--- a/services/syncbase/server/nosql/database.go
+++ b/services/syncbase/server/nosql/database.go
@@ -286,6 +286,25 @@
return data.Perms, util.FormatVersion(data.Version), nil
}
+func (d *databaseReq) Watch(ctx *context.T, call wire.DatabaseWatcherWatchServerCall, req wire.WatchRequest) error {
+ // TODO(rogulenko): Implement.
+ if !d.exists {
+ return verror.New(verror.ErrNoExist, ctx, d.name)
+ }
+ if d.batchId != nil {
+ return wire.NewErrBoundToBatch(ctx)
+ }
+ return verror.NewErrNotImplemented(ctx)
+}
+
+func (d *databaseReq) GetResumeMarker(ctx *context.T, call rpc.ServerCall) (wire.ResumeMarker, error) {
+ // TODO(rogulenko): Implement.
+ if !d.exists {
+ return "", verror.New(verror.ErrNoExist, ctx, d.name)
+ }
+ return "", verror.NewErrNotImplemented(ctx)
+}
+
func (d *databaseReq) GlobChildren__(ctx *context.T, call rpc.ServerCall) (<-chan string, error) {
if !d.exists {
return nil, verror.New(verror.ErrNoExist, ctx, d.name)