001: // $Id: Gossip.java,v 1.6 2006/05/16 11:14:27 belaban Exp $
002:
003: package org.jgroups.protocols.pbcast;
004:
005: import org.jgroups.Address;
006:
007: import java.io.Serializable;
008: import java.util.Vector;
009: import java.net.UnknownHostException;
010:
011: public class Gossip implements Serializable {
012: Address sender = null;
013: long id = -1;
014: Digest digest = null;
015: Vector not_seen = null; // members who haven't seen this specific gossip yet
016: Vector seen = new Vector(11); // members who have seen the gossip already
017: private static final long serialVersionUID = 7954243278668401185L;
018:
019: public Gossip(Address obj, long id) {
020: sender = obj;
021: this .id = id;
022: }
023:
024: public Gossip(Address obj, long id, Digest d, Vector not_seen) {
025: sender = obj;
026: this .id = id;
027: digest = d;
028: this .not_seen = not_seen;
029: }
030:
031: /**
032: * Removes obj from not_seen list
033: */
034: public void removeFromNotSeenList(Address mbr) {
035: if (not_seen != null && mbr != null)
036: not_seen.removeElement(mbr);
037: }
038:
039: public void addToSeenList(Address mbr) {
040: if (mbr != null && !seen.contains(mbr))
041: seen.addElement(mbr);
042: }
043:
044: public int sizeOfNotSeenList() {
045: return not_seen == null ? 0 : not_seen.size();
046: }
047:
048: public Vector getNotSeenList() {
049: return not_seen;
050: }
051:
052: public Vector getSeenList() {
053: return seen;
054: }
055:
056: public boolean equals(Object o) {
057: Gossip other = null;
058:
059: if (sender != null && o != null) {
060: other = (Gossip) o;
061: return sender.equals(other.sender) && id == other.id;
062: }
063: return false;
064: }
065:
066: public int hashCode() {
067: if (sender != null)
068: return sender.hashCode() + (int) id;
069: else
070: return (int) id;
071: }
072:
073: public Gossip copy() {
074: Gossip ret = new Gossip(sender, id);
075: if (digest != null)
076: ret.digest = digest.copy();
077: if (not_seen != null)
078: ret.not_seen = (Vector) not_seen.clone();
079: if (seen != null)
080: ret.seen = (Vector) seen.clone();
081: return ret;
082: }
083:
084: public String toString() {
085: StringBuffer sb = new StringBuffer();
086: sb.append("sender=");
087: if (sender != null)
088: sb.append(sender);
089: else
090: sb.append("<null>");
091: if (digest != null)
092: sb.append(", digest=" + digest);
093: if (not_seen != null)
094: sb.append(", not_seen=" + not_seen);
095: if (seen != null)
096: sb.append(", seen=" + seen);
097: sb.append(", id=" + id);
098: return sb.toString();
099: }
100:
101: public String shortForm() {
102: StringBuffer sb = new StringBuffer();
103: if (sender != null)
104: sb.append(sender);
105: else
106: sb.append("<null>");
107: sb.append("#" + id);
108: return sb.toString();
109: }
110:
111: public static void main(String[] args) throws UnknownHostException {
112: Gossip id1, id2;
113:
114: id1 = new Gossip(
115: new org.jgroups.stack.IpAddress("daddy", 4567), 23);
116: id2 = new Gossip(new org.jgroups.stack.IpAddress(
117: "133.164.130.19", 4567), 23);
118:
119: System.out.println(id1.equals(id2));
120: }
121: }
|