org.jgroups.protocols.relay.SiteUUID Maven / Gradle / Ivy
package org.jgroups.protocols.relay;
import org.jgroups.Address;
import org.jgroups.util.*;
import java.util.Arrays;
import java.util.function.Supplier;
/**
* Implementation of SiteAddress
* @author Bela Ban
* @since 3.2
*/
public class SiteUUID extends ExtendedUUID implements SiteAddress {
protected static final byte[] NAME = Util.stringToBytes("relay2.name"); // logical name, can be null
protected static final byte[] SITE_NAME = Util.stringToBytes("relay2.site");
public SiteUUID() {
}
public SiteUUID(long mostSigBits, long leastSigBits, String name, String site) {
super(mostSigBits,leastSigBits);
if(name != null)
put(NAME, Util.stringToBytes(name));
put(SITE_NAME, Util.stringToBytes(site));
}
public SiteUUID(long mostSigBits, long leastSigBits, byte[] name, byte[] site) {
super(mostSigBits,leastSigBits);
if(name != null)
put(NAME, name);
put(SITE_NAME, site);
}
public SiteUUID(UUID uuid, String name, String site) {
super(uuid.getMostSignificantBits(), uuid.getLeastSignificantBits());
if(name != null)
put(NAME, Util.stringToBytes(name));
put(SITE_NAME, Util.stringToBytes(site));
}
public Supplier extends UUID> create() {
return SiteUUID::new;
}
public String getName() {
return Util.bytesToString(get(NAME));
}
public String getSite() {
return Util.bytesToString(get(SITE_NAME));
}
public UUID copy() {
return new SiteUUID(mostSigBits, leastSigBits, get(NAME), get(SITE_NAME));
}
@Override
public String toString() {
return print(false);
}
@Override
public int compareTo(Address other) {
if (other instanceof SiteUUID) {
int siteCompare = Util.compare(get(SITE_NAME), ((SiteUUID) other).get(SITE_NAME));
//compareTo will check the bits.
return siteCompare == 0 ? super.compareTo(other) : siteCompare;
}
return super.compareTo(other);
}
public String print(boolean detailed) {
String name=getName();
String retval=name != null? name : NameCache.get(this);
return retval + ":" + getSite() + (detailed? printOthers() : "");
}
protected String printOthers() {
StringBuilder sb=new StringBuilder();
if(flags != 0)
sb.append(" flags=" + flags + " (" + flags + ")");
if(keys == null)
return sb.toString();
for(int i=0; i < keys.length; i++) {
byte[] key=keys[i];
if(key == null || Arrays.equals(key,SITE_NAME) || Arrays.equals(key, NAME))
continue;
byte[] val=values[i];
Object obj=null;
try {
obj=Util.bytesToString(val);
}
catch(Throwable t) {
obj=val != null? val.length + " bytes" : null;
}
sb.append(", ").append(new AsciiString(key)).append("=").append(obj);
}
return sb.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy