/** Update my own digest from a digest received by somebody else. Returns whether the update was successful. * Needs to be called with a lock on digest */ @GuardedBy("lock") protected void updateLocalDigest(Digest d, Address sender) { StringBuilder sb=null; if(log.isTraceEnabled()) sb=new StringBuilder().append(local_addr).append(": handling digest from ").append(sender).append(":\nmine: ") .append(printDigest(digest)).append("\nother: ").append(printDigest(d)); for(Digest.Entry entry: d) { Address mbr=entry.getMember(); long hd=entry.getHighestDeliveredSeqno(), hr=entry.getHighestReceivedSeqno(); // compute the minimum of the highest seqnos deliverable (for garbage collection) long[] seqnos=digest.get(mbr); if(seqnos == null) continue; long my_hd=seqnos[0]; long my_hr=seqnos[1]; // (for retransmission of last missing message) if(my_hd == -1) // -1 means the seqno hasn't been set yet my_hd=hd; long new_hd=Math.min(my_hd, hd); long new_hr=Math.max(my_hr, hr); digest.set(mbr, new_hd, new_hr); } if(sb != null) // implies log.isTraceEnabled() == true log.trace(sb.append("\nresult: ").append(printDigest(digest)).append("\n")); }
/** Update my own digest from a digest received by somebody else. Returns whether the update was successful. * Needs to be called with a lock on digest */ @GuardedBy("lock") protected void updateLocalDigest(Digest d, Address sender) { StringBuilder sb=null; if(log.isTraceEnabled()) sb=new StringBuilder().append(local_addr).append(": handling digest from ").append(sender).append(":\nmine: ") .append(printDigest(digest)).append("\nother: ").append(printDigest(d)); for(Digest.Entry entry: d) { Address mbr=entry.getMember(); long hd=entry.getHighestDeliveredSeqno(), hr=entry.getHighestReceivedSeqno(); // compute the minimum of the highest seqnos deliverable (for garbage collection) long[] seqnos=digest.get(mbr); if(seqnos == null) continue; long my_hd=seqnos[0]; long my_hr=seqnos[1]; // (for retransmission of last missing message) if(my_hd == -1) // -1 means the seqno hasn't been set yet my_hd=hd; long new_hd=Math.min(my_hd, hd); long new_hr=Math.max(my_hr, hr); digest.set(mbr, new_hd, new_hr); } if(sb != null) // implies log.isTraceEnabled() == true log.trace(sb.append("\nresult: ").append(printDigest(digest)).append("\n")); }
/** Update my own digest from a digest received by somebody else. Returns whether the update was successful. * Needs to be called with a lock on digest */ @GuardedBy("lock") protected void updateLocalDigest(Digest d, Address sender) { StringBuilder sb=null; if(log.isTraceEnabled()) sb=new StringBuilder().append(local_addr).append(": handling digest from ").append(sender).append(":\nmine: ") .append(printDigest(digest)).append("\nother: ").append(printDigest(d)); for(Digest.Entry entry: d) { Address mbr=entry.getMember(); long hd=entry.getHighestDeliveredSeqno(), hr=entry.getHighestReceivedSeqno(); // compute the minimum of the highest seqnos deliverable (for garbage collection) long[] seqnos=digest.get(mbr); if(seqnos == null) continue; long my_hd=seqnos[0]; long my_hr=seqnos[1]; // (for retransmission of last missing message) if(my_hd == -1) // -1 means the seqno hasn't been set yet my_hd=hd; long new_hd=Math.min(my_hd, hd); long new_hr=Math.max(my_hr, hr); digest.set(mbr, new_hd, new_hr); } if(sb != null) // implies log.isTraceEnabled() == true log.trace(sb.append("\nresult: ").append(printDigest(digest)).append("\n")); }
continue; long highest_delivered_seqno=entry.getHighestDeliveredSeqno();
if(member == null) continue; long hd=entry.getHighestDeliveredSeqno(); long hr=entry.getHighestReceivedSeqno();
if(member == null) continue; long hd=entry.getHighestDeliveredSeqno(); long hr=entry.getHighestReceivedSeqno();
if(member == null) continue; long hd=entry.getHighestDeliveredSeqno(); long hr=entry.getHighestReceivedSeqno();
continue; long highest_delivered_seqno=entry.getHighestDeliveredSeqno();
continue; long highest_delivered_seqno=entry.getHighestDeliveredSeqno();
continue; long highest_delivered_seqno=entry.getHighestDeliveredSeqno();
continue; long highest_delivered_seqno=entry.getHighestDeliveredSeqno();
continue; long highest_delivered_seqno=entry.getHighestDeliveredSeqno();
continue; long highest_delivered_seqno=entry.getHighestDeliveredSeqno();
continue; long highest_delivered_seqno=entry.getHighestDeliveredSeqno();
public MutableDigest set(Digest digest) { if(digest == null) return this; for(Entry entry: digest) set(entry.getMember(), entry.getHighestDeliveredSeqno(), entry.getHighestReceivedSeqno()); return this; }
/** * Adds a digest to this digest. For each sender in the other digest, the merge() method will be called. */ public MutableDigest merge(Digest digest) { if(digest == null) return this; for(Entry entry: digest) merge(entry.getMember(), entry.getHighestDeliveredSeqno(), entry.getHighestReceivedSeqno()); return this; }
public MutableDigest set(Digest digest) { if(digest == null) return this; for(Entry entry: digest) set(entry.getMember(), entry.getHighestDeliveredSeqno(), entry.getHighestReceivedSeqno()); return this; }
/** * Adds a digest to this digest. For each sender in the other digest, the merge() method will be called. */ public MutableDigest merge(Digest digest) { if(digest == null) return this; for(Entry entry: digest) merge(entry.getMember(), entry.getHighestDeliveredSeqno(), entry.getHighestReceivedSeqno()); return this; }
/** * Adds a digest to this digest. For each sender in the other digest, the merge() method will be called. */ public MutableDigest merge(Digest digest) { if(digest == null) return this; for(Entry entry: digest) merge(entry.getMember(), entry.getHighestDeliveredSeqno(), entry.getHighestReceivedSeqno()); return this; }
public MutableDigest set(Digest digest) { if(digest == null) return this; for(Entry entry: digest) set(entry.getMember(), entry.getHighestDeliveredSeqno(), entry.getHighestReceivedSeqno()); return this; }