/** * @return The timestamp from where we need to start the application. * Valid only for initial position of type AT_TIMESTAMP, returns null for other positions. */ public Date getTimestampAtInitialPositionInStream() { return initialPositionInStreamExtended.getTimestamp(); }
/** * Advances this KinesisDataFetcher's internal iterator to be at the passed-in sequence number. * * @param sequenceNumber advance the iterator to the record at this sequence number. * @param initialPositionInStream The initialPositionInStream. */ void advanceIteratorTo(String sequenceNumber, InitialPositionInStreamExtended initialPositionInStream) { if (sequenceNumber == null) { throw new IllegalArgumentException("SequenceNumber should not be null: shardId " + shardId); } else if (sequenceNumber.equals(SentinelCheckpoint.LATEST.toString())) { nextIterator = getIterator(ShardIteratorType.LATEST.toString()); } else if (sequenceNumber.equals(SentinelCheckpoint.TRIM_HORIZON.toString())) { nextIterator = getIterator(ShardIteratorType.TRIM_HORIZON.toString()); } else if (sequenceNumber.equals(SentinelCheckpoint.AT_TIMESTAMP.toString())) { nextIterator = getIterator(initialPositionInStream.getTimestamp()); } else if (sequenceNumber.equals(SentinelCheckpoint.SHARD_END.toString())) { nextIterator = null; } else { nextIterator = getIterator(ShardIteratorType.AT_SEQUENCE_NUMBER.toString(), sequenceNumber); } if (nextIterator == null) { isShardEndReached = true; } this.lastKnownSequenceNumber = sequenceNumber; this.initialPositionInStream = initialPositionInStream; }