mojo: Implement SyncGroup methods.
MultiPart: 2/2
Change-Id: I9ff648751173c34e1ed22edc5be37e38c686cb51
diff --git a/services/syncbase/server/mojo_impl.go b/services/syncbase/server/mojo_impl.go
index 409be72..ecbbc0c 100644
--- a/services/syncbase/server/mojo_impl.go
+++ b/services/syncbase/server/mojo_impl.go
@@ -83,6 +83,46 @@
return mojom.Perms{Json: b.String()}, nil
}
+func toV23SyncGroupMemberInfo(mInfo mojom.SyncGroupMemberInfo) nosqlwire.SyncGroupMemberInfo {
+ return nosqlwire.SyncGroupMemberInfo{
+ SyncPriority: mInfo.SyncPriority,
+ }
+}
+
+func toMojoSyncGroupMemberInfo(vInfo nosqlwire.SyncGroupMemberInfo) mojom.SyncGroupMemberInfo {
+ return mojom.SyncGroupMemberInfo{
+ SyncPriority: vInfo.SyncPriority,
+ }
+}
+
+func toV23SyncGroupSpec(mSpec mojom.SyncGroupSpec) (nosqlwire.SyncGroupSpec, error) {
+ v23Perms, err := toV23Perms(mSpec.Perms)
+ if err != nil {
+ return nosqlwire.SyncGroupSpec{}, err
+ }
+ return nosqlwire.SyncGroupSpec{
+ Description: mSpec.Description,
+ Perms: v23Perms,
+ Prefixes: mSpec.Prefixes,
+ MountTables: mSpec.MountTables,
+ IsPrivate: mSpec.IsPrivate,
+ }, nil
+}
+
+func toMojoSyncGroupSpec(vSpec nosqlwire.SyncGroupSpec) (mojom.SyncGroupSpec, error) {
+ mPerms, err := toMojoPerms(vSpec.Perms)
+ if err != nil {
+ return mojom.SyncGroupSpec{}, err
+ }
+ return mojom.SyncGroupSpec{
+ Description: vSpec.Description,
+ Perms: mPerms,
+ Prefixes: vSpec.Prefixes,
+ MountTables: vSpec.MountTables,
+ IsPrivate: vSpec.IsPrivate,
+ }, nil
+}
+
////////////////////////////////////////
// Stub getters
@@ -430,39 +470,114 @@
// nosql.Database:SyncGroupManager
func (m *mojoImpl) DbGetSyncGroupNames(name string) (mojom.Error, []string, error) {
- return mojom.Error{}, nil, nil
+ ctx, call := m.newCtxCall(name, methodDesc(nosqlwire.SyncGroupManagerDesc, "GetSyncGroupNames"))
+ stub, err := m.getDb(ctx, call, name)
+ if err != nil {
+ return toMojoError(err), nil, nil
+ }
+ names, err := stub.GetSyncGroupNames(ctx, call)
+ return toMojoError(err), names, nil
}
func (m *mojoImpl) DbCreateSyncGroup(name, sgName string, spec mojom.SyncGroupSpec, myInfo mojom.SyncGroupMemberInfo) (mojom.Error, error) {
- return mojom.Error{}, nil
+ ctx, call := m.newCtxCall(name, methodDesc(nosqlwire.SyncGroupManagerDesc, "CreateSyncGroup"))
+ stub, err := m.getDb(ctx, call, name)
+ if err != nil {
+ return toMojoError(err), nil
+ }
+ v23Spec, err := toV23SyncGroupSpec(spec)
+ if err != nil {
+ return toMojoError(err), nil
+ }
+ return toMojoError(stub.CreateSyncGroup(ctx, call, sgName, v23Spec, toV23SyncGroupMemberInfo(myInfo))), nil
}
-func (m *mojoImpl) DbJoinSyncGroup(name, sgName string, myInfo mojom.SyncGroupMemberInfo) (mojom.Error, error) {
- return mojom.Error{}, nil
+func (m *mojoImpl) DbJoinSyncGroup(name, sgName string, myInfo mojom.SyncGroupMemberInfo) (mojom.Error, mojom.SyncGroupSpec, error) {
+ ctx, call := m.newCtxCall(name, methodDesc(nosqlwire.SyncGroupManagerDesc, "JoinSyncGroup"))
+ stub, err := m.getDb(ctx, call, name)
+ if err != nil {
+ return toMojoError(err), mojom.SyncGroupSpec{}, nil
+ }
+ spec, err := stub.JoinSyncGroup(ctx, call, sgName, toV23SyncGroupMemberInfo(myInfo))
+ if err != nil {
+ return toMojoError(err), mojom.SyncGroupSpec{}, nil
+ }
+ mojoSpec, err := toMojoSyncGroupSpec(spec)
+ if err != nil {
+ return toMojoError(err), mojom.SyncGroupSpec{}, nil
+ }
+ return toMojoError(err), mojoSpec, nil
}
func (m *mojoImpl) DbLeaveSyncGroup(name, sgName string) (mojom.Error, error) {
- return mojom.Error{}, nil
+ ctx, call := m.newCtxCall(name, methodDesc(nosqlwire.SyncGroupManagerDesc, "LeaveSyncGroup"))
+ stub, err := m.getDb(ctx, call, name)
+ if err != nil {
+ return toMojoError(err), nil
+ }
+ return toMojoError(stub.LeaveSyncGroup(ctx, call, sgName)), nil
}
func (m *mojoImpl) DbDestroySyncGroup(name, sgName string) (mojom.Error, error) {
- return mojom.Error{}, nil
+ ctx, call := m.newCtxCall(name, methodDesc(nosqlwire.SyncGroupManagerDesc, "DestroySyncGroup"))
+ stub, err := m.getDb(ctx, call, name)
+ if err != nil {
+ return toMojoError(err), nil
+ }
+ return toMojoError(stub.DestroySyncGroup(ctx, call, sgName)), nil
}
func (m *mojoImpl) DbEjectFromSyncGroup(name, sgName string, member string) (mojom.Error, error) {
- return mojom.Error{}, nil
+ ctx, call := m.newCtxCall(name, methodDesc(nosqlwire.SyncGroupManagerDesc, "EjectFromSyncGroup"))
+ stub, err := m.getDb(ctx, call, name)
+ if err != nil {
+ return toMojoError(err), nil
+ }
+ return toMojoError(stub.EjectFromSyncGroup(ctx, call, sgName, member)), nil
}
func (m *mojoImpl) DbGetSyncGroupSpec(name, sgName string) (mojom.Error, mojom.SyncGroupSpec, string, error) {
- return mojom.Error{}, mojom.SyncGroupSpec{}, "", nil
+ ctx, call := m.newCtxCall(name, methodDesc(nosqlwire.SyncGroupManagerDesc, "GetSyncGroupSpec"))
+ stub, err := m.getDb(ctx, call, name)
+ if err != nil {
+ return toMojoError(err), mojom.SyncGroupSpec{}, "", nil
+ }
+ spec, version, err := stub.GetSyncGroupSpec(ctx, call, sgName)
+ mojoSpec, err := toMojoSyncGroupSpec(spec)
+ if err != nil {
+ return toMojoError(err), mojom.SyncGroupSpec{}, "", nil
+ }
+ return toMojoError(err), mojoSpec, version, nil
}
func (m *mojoImpl) DbSetSyncGroupSpec(name, sgName string, spec mojom.SyncGroupSpec, version string) (mojom.Error, error) {
- return mojom.Error{}, nil
+ ctx, call := m.newCtxCall(name, methodDesc(nosqlwire.SyncGroupManagerDesc, "SetSyncGroupSpec"))
+ stub, err := m.getDb(ctx, call, name)
+ if err != nil {
+ return toMojoError(err), nil
+ }
+ v23Spec, err := toV23SyncGroupSpec(spec)
+ if err != nil {
+ return toMojoError(err), nil
+ }
+ return toMojoError(stub.SetSyncGroupSpec(ctx, call, sgName, v23Spec, version)), nil
}
func (m *mojoImpl) DbGetSyncGroupMembers(name, sgName string) (mojom.Error, map[string]mojom.SyncGroupMemberInfo, error) {
- return mojom.Error{}, nil, nil
+ ctx, call := m.newCtxCall(name, methodDesc(nosqlwire.SyncGroupManagerDesc, "GetSyncGroupMembers"))
+ stub, err := m.getDb(ctx, call, name)
+ if err != nil {
+ return toMojoError(err), nil, nil
+ }
+ members, err := stub.GetSyncGroupMembers(ctx, call, sgName)
+ if err != nil {
+ return toMojoError(err), nil, nil
+ }
+ mojoMembers := make(map[string]mojom.SyncGroupMemberInfo, len(members))
+ for name, member := range members {
+ mojoMembers[name] = toMojoSyncGroupMemberInfo(member)
+ }
+ return toMojoError(err), mojoMembers, nil
}
////////////////////////////////////////