/**
* Replication Benchmarker
* https://github.com/score-team/replication-benchmarker/ Copyright (C) 2013
* LORIA / Inria / SCORE Team
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package jbenchmarker.woot;
/**
* A woot identifier : replica and logical clock.
* @author urso
*/
public class WootIdentifier implements Comparable<WootIdentifier>, WootId {
public static final WootIdentifier IB = new WootIdentifier(-1, 0);
public static final WootIdentifier IE = new WootIdentifier(-1, 1);
public WootIdentifier(int replica, int clock) {
this.replica = replica;
this.clock = clock;
}
private int replica;
private int clock;
public int getClock() {
return clock;
}
public int getReplica() {
return replica;
}
@Override
public int compareTo(WootIdentifier t) {
if (this.replica == t.replica) {
return this.clock - t.clock;
} else {
return this.replica - t.replica;
}
}
@Override
public WootIdentifier clone() {
return new WootIdentifier(replica, clock);
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final WootIdentifier other = (WootIdentifier) obj;
if (this.replica != other.replica) {
return false;
}
if (this.clock != other.clock) {
return false;
}
return true;
}
@Override
public int hashCode() {
int hash = 7;
hash = 13 * hash + this.replica;
hash = 13 * hash + this.clock;
return hash;
}
@Override
public String toString() {
return "[" + replica + ',' + clock + ']';
}
@Override
public WootIdentifier getId() {
return this;
}
}