package co.codewizards.cloudstore.ls.core.invoke;
import static co.codewizards.cloudstore.core.util.AssertUtil.*;
import static co.codewizards.cloudstore.core.util.Util.*;
import co.codewizards.cloudstore.core.Uid;
public class DelayedResponseIdScheduledEviction implements Comparable<DelayedResponseIdScheduledEviction> {
private final long scheduledEvictionTimestamp;
private final Uid delayedResponseId;
public DelayedResponseIdScheduledEviction(final long scheduledEvictionTimestamp, final Uid delayedResponseId) {
this.scheduledEvictionTimestamp = scheduledEvictionTimestamp;
this.delayedResponseId = assertNotNull(delayedResponseId, "delayedResponseId");
}
public Uid getDelayedResponseId() {
return delayedResponseId;
}
public long getScheduledEvictionTimestamp() {
return scheduledEvictionTimestamp;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (int) (scheduledEvictionTimestamp ^ (scheduledEvictionTimestamp >>> 32));
result = prime * result + ((delayedResponseId == null) ? 0 : delayedResponseId.hashCode());
return result;
}
@Override
public boolean equals(final Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
final DelayedResponseIdScheduledEviction other = (DelayedResponseIdScheduledEviction) obj;
return equal(this.scheduledEvictionTimestamp, other.scheduledEvictionTimestamp)
&& equal(this.delayedResponseId, other.delayedResponseId);
}
@Override
public int compareTo(final DelayedResponseIdScheduledEviction other) {
int res = Long.compare(this.scheduledEvictionTimestamp, other.scheduledEvictionTimestamp);
if (res != 0)
return res;
res = this.delayedResponseId.compareTo(other.delayedResponseId);
return res;
}
}