All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.microsoft.azure.eventprocessorhost.Checkpoint Maven / Gradle / Ivy

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.microsoft.azure.eventprocessorhost;

import com.microsoft.azure.eventhubs.impl.ClientConstants;

/**
 * Checkpoint class is public so that advanced users can implement an ICheckpointManager.
 * Unless you are implementing ICheckpointManager you should not have to deal with objects
 * of this class directly.
 * 

* A Checkpoint is essentially just a tuple. It has a fixed partition id, set at creation time * and immutable thereafter, and associates that with an offset/sequenceNumber pair which * indicates a position within the events in that partition. */ public class Checkpoint { private final String partitionId; private String offset = ClientConstants.START_OF_STREAM; private long sequenceNumber = 0; /** * Create a checkpoint with offset/sequenceNumber set to the start of the stream. * * @param partitionId Associated partition. */ public Checkpoint(String partitionId) { this.partitionId = partitionId; } /** * Create a checkpoint with the given offset and sequenceNumber. It is important that the * offset and sequence number refer to the same event in the stream. The safest thing * to do is get both values from the system properties of one EventData instance. * * @param partitionId Associated partition. * @param offset Offset in the stream. * @param sequenceNumber Sequence number in the stream. */ public Checkpoint(String partitionId, String offset, long sequenceNumber) { this.partitionId = partitionId; this.offset = offset; this.sequenceNumber = sequenceNumber; } /** * Create a checkpoint which is a duplicate of the given checkpoint. * * @param source Existing checkpoint to clone. */ public Checkpoint(Checkpoint source) { this.partitionId = source.partitionId; this.offset = source.offset; this.sequenceNumber = source.sequenceNumber; } /** * Return the offset. * * @return the current offset value. */ public String getOffset() { return this.offset; } /** * Set the offset. Remember to also set the sequence number! * * @param newOffset the new value for offset in the stream. */ public void setOffset(String newOffset) { this.offset = newOffset; } /** * Get the sequence number. * * @return the current sequence number. */ public long getSequenceNumber() { return this.sequenceNumber; } /** * Set the sequence number. Remember to also set the offset! * * @param newSequenceNumber the new value for sequence number. */ public void setSequenceNumber(long newSequenceNumber) { this.sequenceNumber = newSequenceNumber; } /** * Get the partition id. There is no corresponding setter because the partition id is immutable. * * @return the associated partition id. */ public String getPartitionId() { return this.partitionId; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy