/* # Licensed Materials - Property of IBM # Copyright IBM Corp. 2015 */ package com.ibm.streamsx.topology.test; import com.ibm.streamsx.topology.function.UnaryOperator; /** * A functional operator to delay a stream's first tuple; * subsequent tuples are not delayed. * * @param <T> */ public class InitialDelay<T> implements UnaryOperator<T> { private static final long serialVersionUID = 1L; private long initialDelayMsec; /** * @param delayMsec */ public InitialDelay(long delayMsec) { if (delayMsec < 0) throw new IllegalArgumentException("delayMsec"); this.initialDelayMsec = delayMsec; } @Override public T apply(T v) { if (initialDelayMsec != -1) { try { Thread.sleep(initialDelayMsec); } catch (InterruptedException e) { // Force parent thread to terminate Thread.currentThread().interrupt(); return null; } initialDelayMsec = -1; } return v; } }