package org.opendaylight.controller.cluster.datastore.identifiers;
import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
+import org.opendaylight.controller.cluster.access.concepts.MemberName;
public class TransactionIdentifier {
- private static final String TX_SEPARATOR = "-txn-";
+ protected static final String TX_SEPARATOR = "-txn-";
- private final String memberName;
+ private final MemberName memberName;
private final long counter;
+ private final long timestamp;
private String stringRepresentation;
- public TransactionIdentifier(String memberName, long counter) {
+ public TransactionIdentifier(MemberName memberName, long counter) {
this.memberName = Preconditions.checkNotNull(memberName, "memberName should not be null");
this.counter = counter;
+ this.timestamp = System.currentTimeMillis();
}
public String getChainId() {
return "";
}
- public static TransactionIdentifier create(String memberName, long counter, String chainId) {
- if (Strings.isNullOrEmpty(chainId)) {
- return new TransactionIdentifier(memberName, counter);
- } else {
- return new ChainedTransactionIdentifier(memberName, counter, chainId);
- }
+ protected MemberName getMemberName() {
+ return memberName;
+ }
+
+ protected long getCounter() {
+ return counter;
+ }
+
+ protected long getTimestamp() {
+ return timestamp;
+ }
+
+ public static TransactionIdentifier create(MemberName memberName, long counter) {
+ return new TransactionIdentifier(memberName, counter);
}
@Override
if (counter != that.counter) {
return false;
}
+
+ if (timestamp != that.timestamp) {
+ return false;
+ }
+
if (!memberName.equals(that.memberName)) {
return false;
}
public int hashCode() {
int result = memberName.hashCode();
result = 31 * result + (int) (counter ^ (counter >>> 32));
+ result = 31 * result + (int)(timestamp ^ (timestamp >>> 32));
return result;
}
+
@Override
public String toString() {
if(stringRepresentation == null) {
- stringRepresentation = new StringBuilder(memberName.length() + TX_SEPARATOR.length() + 10).
- append(memberName).append(TX_SEPARATOR).append(counter).toString();
+ stringRepresentation = new StringBuilder(memberName.getName().length() + TX_SEPARATOR.length() + 21).
+ append(memberName.getName()).append(TX_SEPARATOR).append(counter).append('-').append(timestamp).toString();
}
return stringRepresentation;
}
+
}