public Optional<ClientContact> get() throws IOException { byte[] result = response.get(); if (result == null) { return Optional.empty(); } TokenValue tokenValue = objectMapper.readValue(result, TokenValue.class); return Optional.of(new ClientContact(token, tokenValue.relay, tokenValue.voice, tokenValue.video)); }
protected <T> Response<T> getResponse(Builder<T> builder) { Response<T> lr = new Response<T>(builder); pipelinedResponses.add(lr); return lr; }
@Override public List<Object> build(Object data) { @SuppressWarnings("unchecked") List<Object> list = (List<Object>) data; List<Object> values = new ArrayList<Object>(); if (list.size() != responses.size()) { throw new JedisDataException("Expected data size " + responses.size() + " but was " + list.size()); } for (int i = 0; i < list.size(); i++) { Response<?> response = responses.get(i); response.set(list.get(i)); Object builtResponse; try { builtResponse = response.get(); } catch (JedisDataException e) { builtResponse = e; } values.add(builtResponse); } return values; }
protected Response<?> generateResponse(Object data) { Response<?> response = pipelinedResponses.poll(); if (response != null) { response.set(data); } return response; }
public T get() { // if response has dependency response and dependency is not built, // build it first and no more!! if (dependency != null && dependency.set && !dependency.built) { dependency.build(); } if (!set) { throw new JedisDataException( "Please close pipeline or multi block before calling this method."); } if (!built) { build(); } if (exception != null) { throw exception; } return response; }
@Nullable @Override @SuppressWarnings("unchecked") public T get() { return (T) getResultHolder().get(); }
@Override protected <T> Response<T> getResponse(Builder<T> builder) { if (currentMulti != null) { super.getResponse(BuilderFactory.STRING); // Expected QUEUED Response<T> lr = new Response<T>(builder); currentMulti.addResponse(lr); return lr; } else { return super.getResponse(builder); } }
/** * Syncronize pipeline by reading all responses. This operation closes the pipeline. Whenever * possible try to avoid using this version and use ShardedJedisPipeline.sync() as it won't go * through all the responses and generate the right response type (usually it is a waste of time). * @return A list of all the responses in the order you executed them. */ public List<Object> syncAndReturnAll() { List<Object> formatted = new ArrayList<Object>(); for (Client client : clients) { formatted.add(generateResponse(client.getOne()).get()); } return formatted; }
/** * Synchronize pipeline by reading all responses. This operation close the pipeline. Whenever * possible try to avoid using this version and use Pipeline.sync() as it won't go through all the * responses and generate the right response type (usually it is a waste of time). * @return A list of all the responses in the order you executed them. */ public List<Object> syncAndReturnAll() { if (getPipelinedResponseLength() > 0) { List<Object> unformatted = client.getMany(getPipelinedResponseLength()); List<Object> formatted = new ArrayList<Object>(); for (Object o : unformatted) { try { formatted.add(generateResponse(o).get()); } catch (JedisDataException e) { formatted.add(e); } } return formatted; } else { return java.util.Collections.<Object> emptyList(); } }
public List<Object> exec() { // Discard QUEUED or ERROR client.getMany(getPipelinedResponseLength()); client.exec(); inTransaction = false; List<Object> unformatted = client.getObjectMultiBulkReply(); if (unformatted == null) { return null; } List<Object> formatted = new ArrayList<Object>(); for (Object o : unformatted) { try { formatted.add(generateResponse(o).get()); } catch (JedisDataException e) { formatted.add(e); } } return formatted; }
private void innerSync(List<Object> formatted) { try { Response<?> response; Object data; for (Client client : clients) { response = generateResponse(client.getOne()); if (null != formatted) { data = response.get(); formatted.add(data); } } } catch (JedisRedirectionException jre) { throw jre; } finally { close(); } }