private String toString(Function<T,String> toStringFn) { // N.B. See note in classdoc wrt Guava Range behavior. String[] parts = { "(", "*", "*", ")" }; if (lowerEndpoint!=null) { parts[0] = lbt==BoundType.CLOSED ? "[" : "("; parts[1] = toStringFn.apply(lowerEndpoint); } if (upperEndpoint!=null) { parts[2] = toStringFn.apply(upperEndpoint); parts[3] = ubt==BoundType.CLOSED ? "]" : ")"; } return parts[0]+parts[1]+".."+parts[2]+parts[3]; }
@Override public void accept(T t) { String topic = topicFn.apply(t); Integer partition = partitionFn.apply(t); byte[] key = keyFn.apply(t); byte[] value = valueFn.apply(t); ProducerRecord<byte[],byte[]> rec = new ProducerRecord<>( topic, partition, key, value); trace.trace("{} sending rec to topic:{} partition:{}", id(), topic, partition); // TODO add callback for trace of actual completion? connector.client().send(rec); // async; doesn't throw }
@Override public void accept(T t) { String topic = topicFn.apply(t); Integer partition = partitionFn.apply(t); byte[] key = keyFn.apply(t); byte[] value = valueFn.apply(t); ProducerRecord<byte[],byte[]> rec = new ProducerRecord<>( topic, partition, key, value); trace.trace("{} sending rec to topic:{} partition:{}", id(), topic, partition); // TODO add callback for trace of actual completion? connector.client().send(rec); // async; doesn't throw }
@Override public void accept(I tuple) { O output = function.apply(tuple); if (output != null) submit(output); }
@Override public void accept(I tuple) { O output = function.apply(tuple); if (output != null) submit(output); }
private void pre(String pathname, Consumer<String> dst) { String preStr = preFn.apply(pathname); if (preStr != null) dst.accept(preStr); }
@Override public R apply(T value) { final Function<T,R> function = f(); synchronized (function) { return function.apply(value); } } }
@Override public void accept(I tuple) { Iterable<O> outputs = function.apply(tuple); if (outputs != null) { for (O output : outputs) { if (output != null) submit(output); } } }
@Override public void accept(I tuple) { Iterable<O> outputs = function.apply(tuple); if (outputs != null) { for (O output : outputs) { if (output != null) submit(output); } } }
@Override public R apply(T value) { final Function<T,R> function = f(); synchronized (function) { return function.apply(value); } } }
@Override public void accept(T value) { connector.sendBinary(toPayload.apply(value)); }
void onBinaryMessage(byte[] message) { eventHandler.accept(toTuple.apply(message)); }
@Override public <E extends Enum<E>> EnumMap<E,TStream<T>> split(Class<E> enumClass, Function<T, E> splitter) { E[] es = enumClass.getEnumConstants(); List<TStream<T>> outputs = split(es.length, t -> { E split = splitter.apply(t); return split != null ? split.ordinal() : -1; }); EnumMap<E,TStream<T>> returnMap = new EnumMap<>(enumClass); for (E e : es) { returnMap.put(e, outputs.get(e.ordinal())); } return returnMap; }
void onTextMessage(String message) { eventHandler.accept(toTuple.apply(message)); }
private void acceptCallback(byte[] msg) { T tuple = toTupleFn.apply(msg); eventSubmitter.accept(tuple); }
@Override public void accept(T value) { connector.sendText(toPayload.apply(value)); }