blob: 32f945dbc9688693fc7f9ab1a2aac7ce3f2fd2ae [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
part of syncbase_client;
class SyncbaseSyncgroup {
final String name;
final String _dbName;
final mojom.SyncbaseProxy _proxy;
SyncbaseSyncgroup._internal(this._proxy, this._dbName, this.name);
Future create(
mojom.SyncgroupSpec spec, mojom.SyncgroupMemberInfo myInfo) async {
var v = await _proxy.ptr.dbCreateSyncgroup(_dbName, name, spec, myInfo);
if (isError(v.err)) throw v.err;
}
Future join(mojom.SyncgroupMemberInfo myInfo) async {
var v = await _proxy.ptr.dbJoinSyncgroup(_dbName, name, myInfo);
if (isError(v.err)) throw v.err;
}
Future leave() async {
var v = await _proxy.ptr.dbLeaveSyncgroup(_dbName, name);
if (isError(v.err)) throw v.err;
}
Future destroy() async {
var v = await _proxy.ptr.dbDestroySyncgroup(_dbName, name);
if (isError(v.err)) throw v.err;
}
Future eject(String memberName) async {
var v = await _proxy.ptr.dbEjectFromSyncgroup(_dbName, name, memberName);
if (isError(v.err)) throw v.err;
}
Future<mojom.SyncgroupSpec> getSpec() async {
var v = await _proxy.ptr.dbGetSyncgroupSpec(_dbName, name);
if (isError(v.err)) throw v.err;
// TODO(nlacasse): We need to return the version too. Create a struct type
// that combines spec and version?
return v.spec;
}
Future setSpec(mojom.SyncgroupSpec spec, String version) async {
var v = await _proxy.ptr.dbSetSyncgroupSpec(_dbName, name, spec, version);
if (isError(v.err)) throw v.err;
}
Future<Map<String, mojom.SyncgroupMemberInfo>> getMembers() async {
var v = await _proxy.ptr.dbGetSyncgroupMembers(_dbName, name);
if (isError(v.err)) throw v.err;
return v.infos;
}
}