@Override public List<T> executeOnGroup(Object arguments, String... groups) throws IOException { final List<String> stringGroups = Arrays.asList(groups); ClientProtocol.Message request = ClientProtocol.Message.newBuilder() .setExecuteFunctionOnGroupRequest(FunctionAPI.ExecuteFunctionOnGroupRequest.newBuilder() .addAllGroupName(stringGroups).setFunctionID(functionId)) .build(); final FunctionAPI.ExecuteFunctionOnGroupResponse response = channel .sendRequest(request, ClientProtocol.Message.MessageTypeCase.EXECUTEFUNCTIONONGROUPRESPONSE) .getExecuteFunctionOnGroupResponse(); return response.getResultsList().stream().map(value -> (T) valueEncoder.decodeValue(value)) .collect(Collectors.toList()); } }
@Override public List<T> executeOnMember(Object arguments, String... members) throws IOException { final List<String> stringMembers = Arrays.asList(members); ClientProtocol.Message request = ClientProtocol.Message.newBuilder() .setExecuteFunctionOnMemberRequest(FunctionAPI.ExecuteFunctionOnMemberRequest.newBuilder() .addAllMemberName(stringMembers).setFunctionID(functionId)) .build(); final FunctionAPI.ExecuteFunctionOnMemberResponse response = channel .sendRequest(request, ClientProtocol.Message.MessageTypeCase.EXECUTEFUNCTIONONMEMBERRESPONSE) .getExecuteFunctionOnMemberResponse(); return response.getResultsList().stream().map(value -> (T) valueEncoder.decodeValue(value)) .collect(Collectors.toList()); }
@Override public Set<String> getRegionNames() throws IOException { Set<String> regionNames = new HashSet<>(); final Message request = Message.newBuilder().setGetRegionNamesRequest(GetRegionNamesRequest.newBuilder()).build(); final RegionAPI.GetRegionNamesResponse getRegionNamesResponse = channel .sendRequest(request, MessageTypeCase.GETREGIONNAMESRESPONSE).getGetRegionNamesResponse(); for (int i = 0; i < getRegionNamesResponse.getRegionsCount(); ++i) { regionNames.add(getRegionNamesResponse.getRegions(i)); } return regionNames; }
@Override public Set<K> keySet() throws IOException { final Message request = Message.newBuilder() .setKeySetRequest(RegionAPI.KeySetRequest.newBuilder().setRegionName(name)).build(); final Message message = protobufChannel.sendRequest(request, MessageTypeCase.KEYSETRESPONSE); final RegionAPI.KeySetResponse keySetResponse = message.getKeySetResponse(); Set<K> keys = new HashSet<>(keySetResponse.getKeysCount()); for (BasicTypes.EncodedValue value : keySetResponse.getKeysList()) { keys.add((K) valueEncoder.decodeValue(value)); } return keys; } }
/** * Creates a request object containing a RegionAPI.GetRequest * * @param regionName - Name of the region being fetched from * @param key - Encoded key, see createEncodedValue in {@link ProtobufRequestUtilities} * @return Request object containing the passed params. */ public static ClientProtocol.Message createGetRequest(String regionName, BasicTypes.EncodedValue key) { RegionAPI.GetRequest getRequest = RegionAPI.GetRequest.newBuilder().setRegionName(regionName).setKey(key).build(); return ClientProtocol.Message.newBuilder().setGetRequest(getRequest).build(); }
public static ClientProtocol.Message makeGetSizeRequestMessage(String requestRegion) { return ClientProtocol.Message.newBuilder().setGetSizeRequest(makeGetSizeRequest(requestRegion)) .build(); }
/** * Create a request to insert multiple entries in a region * * @param regionName - Region to which entries are being added * @param entries - key, value pairs to add to the region * @return Request object containing the putAll request for the passed parameters */ public static ClientProtocol.Message createPutAllRequest(String regionName, Set<BasicTypes.Entry> entries) { RegionAPI.PutAllRequest.Builder putAllRequestBuilder = RegionAPI.PutAllRequest.newBuilder().setRegionName(regionName); putAllRequestBuilder.addAllEntry(entries); return ClientProtocol.Message.newBuilder().setPutAllRequest(putAllRequestBuilder).build(); }
/** * Creates a request object containing a RegionAPI.PutIfAbsentRequest * * @param region - Name of the region to put data in * @param entry - Encoded key,value pair, see createEntry in {@link ProtobufRequestUtilities} * @return Request object containing the passed params. */ public static ClientProtocol.Message createPutIfAbsentRequest(String region, BasicTypes.Entry entry) { RegionAPI.PutIfAbsentRequest putIfAbsentRequest = RegionAPI.PutIfAbsentRequest.newBuilder().setRegionName(region).setEntry(entry).build(); return ClientProtocol.Message.newBuilder().setPutIfAbsentRequest(putIfAbsentRequest).build(); }
/** * Creates a request object containing a RegionAPI.RemoveRequest * * @param regionName - Name of the region being deleted from * @param key - Encoded key, see createEncodedValue in {@link ProtobufRequestUtilities} * @return Request object containing the passed params. */ public static ClientProtocol.Message createRemoveRequest(String regionName, BasicTypes.EncodedValue key) { RegionAPI.RemoveRequest removeRequest = RegionAPI.RemoveRequest.newBuilder().setRegionName(regionName).setKey(key).build(); return ClientProtocol.Message.newBuilder().setRemoveRequest(removeRequest).build(); }
@Override public void put(K key, V value) throws IOException { final Message request = Message.newBuilder().setPutRequest( PutRequest.newBuilder().setRegionName(name).setEntry(valueEncoder.encodeEntry(key, value))) .build(); protobufChannel.sendRequest(request, MessageTypeCase.PUTRESPONSE); }
/** * This creates a protobuf message containing a ClientProtocol.Message * * @param getAllRequest - The request for the message * @return a protobuf Message containing the above parameters */ public static ClientProtocol.Message createProtobufRequestWithGetAllRequest( RegionAPI.GetAllRequest getAllRequest) { return ClientProtocol.Message.newBuilder().setGetAllRequest(getAllRequest).build(); } }
/** * Creates a request object containing a RegionAPI.PutRequest * * @param region - Name of the region to put data in * @param entry - Encoded key,value pair, see createEntry in {@link ProtobufRequestUtilities} * @return Request object containing the passed params. */ public static ClientProtocol.Message createPutRequest(String region, BasicTypes.Entry entry) { RegionAPI.PutRequest putRequest = RegionAPI.PutRequest.newBuilder().setRegionName(region).setEntry(entry).build(); return ClientProtocol.Message.newBuilder().setPutRequest(putRequest).build(); }
/** * Creates a request object containing a RegionAPI.ClearRequest * * @param regionName - Name of the region being cleared * @return Request object containing the passed params. */ public static ClientProtocol.Message createClearRequest(String regionName) { RegionAPI.ClearRequest clearRequest = RegionAPI.ClearRequest.newBuilder().setRegionName(regionName).build(); return ClientProtocol.Message.newBuilder().setClearRequest(clearRequest).build(); }
@Override public void remove(K key) throws IOException { final Message request = Message.newBuilder() .setRemoveRequest( RemoveRequest.newBuilder().setRegionName(name).setKey(valueEncoder.encodeValue(key))) .build(); protobufChannel.sendRequest(request, MessageTypeCase.REMOVERESPONSE); }
public static ClientProtocol.Message createGetRequestMessage() { ClientProtocol.Message.Builder messageBuilder = ClientProtocol.Message.newBuilder(); messageBuilder.setGetRequest(getGetRequestBuilder()); return messageBuilder.build(); }
private void sendHandshake(String username, String password, OutputStream outputStream) throws IOException { final ConnectionAPI.HandshakeRequest.Builder builder = ConnectionAPI.HandshakeRequest.newBuilder(); if (username != null) { builder.putCredentials("security-username", username); builder.putCredentials("security-password", password); } builder.setValueFormat(serializer.getID()); final Message authenticationRequest = Message.newBuilder().setHandshakeRequest(builder).build(); authenticationRequest.writeDelimitedTo(outputStream); }
@Override public V putIfAbsent(K key, V value) throws IOException { final RegionAPI.PutIfAbsentRequest.Builder putIfAbsentRequest = RegionAPI.PutIfAbsentRequest .newBuilder().setRegionName(name).setEntry(valueEncoder.encodeEntry(key, value)); final Message request = Message.newBuilder().setPutIfAbsentRequest(putIfAbsentRequest).build(); final RegionAPI.PutIfAbsentResponse putIfAbsentResponse = protobufChannel .sendRequest(request, MessageTypeCase.PUTIFABSENTRESPONSE).getPutIfAbsentResponse(); return (V) valueEncoder.decodeValue(putIfAbsentResponse.getOldValue()); }
@Override public V get(K key) throws IOException { Message request = Message.newBuilder() .setGetRequest( GetRequest.newBuilder().setRegionName(name).setKey(valueEncoder.encodeValue(key))) .build(); final Message response = protobufChannel.sendRequest(request, MessageTypeCase.GETRESPONSE); return (V) valueEncoder.decodeValue(response.getGetResponse().getResult()); }
@Override public int size() throws IOException { final Message request = Message.newBuilder() .setGetSizeRequest(RegionAPI.GetSizeRequest.newBuilder().setRegionName(name)).build(); return protobufChannel.sendRequest(request, MessageTypeCase.GETSIZERESPONSE) .getGetSizeResponse().getSize(); }
@Override public void clear() throws IOException { final Message request = Message.newBuilder() .setClearRequest(RegionAPI.ClearRequest.newBuilder().setRegionName(name)).build(); protobufChannel.sendRequest(request, MessageTypeCase.CLEARRESPONSE); }