blob: 373e820bd6d3e1de358a8618027d5cd04fe84e2e [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.
package io.v.syncbase.v23.services.syncbase.nosql;
import java.util.Map;
import com.google.common.collect.ImmutableMap;
import io.v.syncbase.v23.services.syncbase.nosql.Schema;
import io.v.syncbase.v23.services.syncbase.nosql.SyncGroupManagerClient.GetSyncGroupSpecOut;
import io.v.v23.context.VContext;
import io.v.v23.verror.VException;
class SyncGroupImpl implements SyncGroup {
private final String name;
private final String dbFullName;
private final DatabaseClient dbClient;
SyncGroupImpl(String dbFullName, String name) {
this.name = name;
this.dbFullName = dbFullName;
this.dbClient = DatabaseClientFactory.getDatabaseClient(dbFullName);
}
@Override
public void create(VContext ctx, SyncGroupSpec spec, SyncGroupMemberInfo info) throws VException {
this.dbClient.createSyncGroup(ctx, this.name, spec, info);
}
@Override
public SyncGroupSpec join(VContext ctx, SyncGroupMemberInfo info) throws VException {
return this.dbClient.joinSyncGroup(ctx, this.name, info);
}
@Override
public void leave(VContext ctx) throws VException {
this.dbClient.leaveSyncGroup(ctx, this.name);
}
@Override
public void destroy(VContext ctx) throws VException {
this.dbClient.destroySyncGroup(ctx, this.name);
}
@Override
public void eject(VContext ctx, String member) throws VException {
this.dbClient.ejectFromSyncGroup(ctx, this.name, member);
}
@Override
public Map<String, SyncGroupSpec> getSpec(VContext ctx) throws VException {
GetSyncGroupSpecOut spec = this.dbClient.getSyncGroupSpec(ctx, this.name);
return ImmutableMap.of(spec.version, spec.spec);
}
@Override
public void setSpec(VContext ctx, SyncGroupSpec spec, String version) throws VException {
this.dbClient.setSyncGroupSpec(ctx, this.name, spec, version);
}
@Override
public Map<String, SyncGroupMemberInfo> getMembers(VContext ctx) throws VException {
return this.dbClient.getSyncGroupMembers(ctx, this.name);
}
}