package com.distkv.client; import com.distkv.asyncclient.DistkvAsyncSetProxy; import com.distkv.rpc.protobuf.generated.DistkvProtocol.DistkvResponse; import com.distkv.rpc.protobuf.generated.SetProtocol.SetExistsResponse; import com.distkv.rpc.protobuf.generated.SetProtocol.SetGetResponse; import com.google.protobuf.InvalidProtocolBufferException; import java.util.HashSet; import java.util.Set; import com.distkv.common.exception.DistkvException; import com.distkv.common.utils.FutureUtils; public class DistkvSetProxy { private static final String typeCode = "C"; private DistkvAsyncSetProxy asyncSetProxy; public DistkvSetProxy(DistkvAsyncSetProxy asyncSetProxy) { this.asyncSetProxy = asyncSetProxy; } public void put(String key, Set<String> values) { DistkvResponse response = FutureUtils.get(asyncSetProxy.put(key, values)); CheckStatusUtil.checkStatus(response.getStatus(), key, typeCode); } public Set<String> get(String key) throws DistkvException { DistkvResponse response = FutureUtils.get(asyncSetProxy.get(key)); CheckStatusUtil.checkStatus(response.getStatus(), key, typeCode); try { return new HashSet<>(response.getResponse().unpack(SetGetResponse.class).getValuesList()); } catch (InvalidProtocolBufferException e) { throw new DistkvException(e.toString()); } } public void putItem(String key, String entity) { DistkvResponse response = FutureUtils.get(asyncSetProxy.putItem(key, entity)); CheckStatusUtil.checkStatus(response.getStatus(), key, typeCode); } public void removeItem(String key, String entity) { DistkvResponse response = FutureUtils.get(asyncSetProxy.removeItem(key, entity)); CheckStatusUtil.checkStatus(response.getStatus(), key, entity, typeCode); } public boolean exists(String key, String entity) { DistkvResponse response = FutureUtils.get(asyncSetProxy.exists(key, entity)); CheckStatusUtil.checkStatus(response.getStatus(), key, typeCode); try { return response.getResponse().unpack(SetExistsResponse.class).getResult(); } catch (InvalidProtocolBufferException e) { throw new DistkvException(e.toString()); } } }