public ViewId getViewId() {return view != null? view.getViewId() : null;} public View view() {return view;}
public ViewId getViewId() { return view != null? view.getViewId() : null; }
public static String printViews(Collection<View> views) { StringBuilder sb=new StringBuilder(); boolean first=true; for(View view : views) { if(first) first=false; else sb.append(", "); sb.append(view.getViewId()); } return sb.toString(); }
public static boolean containsViewId(Collection<View> views,ViewId vid) { for(View view : views) { ViewId tmp=view.getViewId(); if(tmp.equals(vid)) return true; } return false; }
public static List<View> detectDifferentViews(Map<Address,View> map) { final List<View> ret=new ArrayList<>(); for(View view : map.values()) { if(view == null) continue; ViewId vid=view.getViewId(); if(!Util.containsViewId(ret,vid)) ret.add(view); } return ret; }
private long currentViewId() { long viewId = -1; synchronized (sharedLock) { ViewId view = currentView.getViewId(); if (view != null) { viewId = view.getId(); } } return viewId; }
public static List<View> detectDifferentViews(Map<Address,View> map) { final List<View> ret=new ArrayList<>(); for(View view: map.values()) { if(view == null) continue; ViewId vid=view.getViewId(); if(!Util.containsViewId(ret, vid)) ret.add(view); } return ret; }
protected static View createDeltaView(final View current_view, final View next_view) { final ViewId current_view_id=current_view.getViewId(); final ViewId next_view_id=next_view.getViewId(); Address[][] diff=View.diff(current_view, next_view); return new DeltaView(next_view_id, current_view_id, diff[1], diff[0]); }
static String print(View view) { StringBuilder sb=new StringBuilder(); boolean first=true; sb.append(view.getClass().getSimpleName() + ": ").append(view.getViewId()).append(": "); for(Address mbr: view.getMembers()) { if(first) first=false; else sb.append(", "); sb.append(mbr); } return sb.toString(); } }
static String print(View view) { StringBuilder sb=new StringBuilder(); boolean first=true; sb.append(view.getClass().getSimpleName() + ": ").append(view.getViewId()).append(": "); for(Address mbr: view.getMembers()) { if(first) first=false; else sb.append(", "); sb.append(mbr); } return sb.toString(); } }
@GuardedBy("deliverSet") private long internalGetViewId() { return currentView == null ? -1 : currentView.getViewId().getId(); }
@ManagedAttribute public String getView() {return view != null? view.getViewId().toString() : "null";} @ManagedAttribute
@ManagedAttribute public String getView() {return view != null? view.getViewId().toString() : "null";}
protected View createViewFromDeltaView(View current_view, DeltaView delta_view) { if(current_view == null || delta_view == null) throw new IllegalStateException("current view (" + current_view + ") or delta view (" + delta_view + ") is null"); ViewId current_view_id=current_view.getViewId(), delta_ref_view_id=delta_view.getRefViewId(), delta_view_id=delta_view.getViewId(); if(!current_view_id.equals(delta_ref_view_id)) throw new IllegalStateException("the view-id of the delta view ("+delta_ref_view_id+") doesn't match the " + "current view-id ("+current_view_id+"); discarding delta view " + delta_view); List<Address> current_mbrs=current_view.getMembers(); List<Address> left_mbrs=Arrays.asList(delta_view.getLeftMembers()); List<Address> new_mbrs=Arrays.asList(delta_view.getNewMembers()); List<Address> new_mbrship=computeNewMembership(current_mbrs,new_mbrs,left_mbrs,Collections.emptyList()); return new View(delta_view_id, new_mbrship); }
protected MergeHeader createInfo() { PhysicalAddress physical_addr=local_addr != null? (PhysicalAddress)down_prot.down(new Event(Event.GET_PHYSICAL_ADDRESS, local_addr)) : null; return MergeHeader.createInfo(view.getViewId(), NameCache.get(local_addr), physical_addr); }
public void viewAccepted(View view) { if(bridge_view != null && bridge_view.getViewId().equals(view.getViewId())) return; int prev_members=bridge_view != null? bridge_view.size() : 0; bridge_view=view; switch(view.size()) { case 1: // the remote cluster disappeared, remove all of its addresses from the view if(prev_members > 1 && view.getCoord().equals(bridge.getAddress())) { remote_view=null; View new_global_view=generateGlobalView(local_view, null); sendViewOnLocalCluster(null, new_global_view, false, null); } break; case 2: startRemoteViewFetcher(); break; default: // System.err.println("View size of > 2 is invalid: view=" + view); break; } } }
/** In case we get a different JOIN_RSP from a previous JOIN_REQ sent by us (as a client), we simply apply the * new view if it is greater than ours * * @param join_rsp */ public void handleJoinResponse(JoinRsp join_rsp) { View v=join_rsp.getView(); ViewId tmp_vid=v != null? v.getViewId() : null; ViewId my_view=gms.getViewId(); if(tmp_vid != null && my_view != null && tmp_vid.compareToIDs(my_view) > 0) { Digest d=join_rsp.getDigest(); gms.installView(v, d); } }
protected Object installView(byte[] buf, int offset, int length) { try { ViewData data=Util.streamableFromByteBuffer(ViewData::new, buf, offset, length); if(data.uuids != null) NameCache.add(data.uuids); remote_view=data.remote_view; if(global_view == null || (data.global_view != null &&!global_view.equals(data.global_view))) { global_view=data.global_view; synchronized(this) { if(data.global_view.getViewId().getId() > global_view_id) global_view_id=data.global_view.getViewId().getId(); } if(present_global_views) return up_prot.up(new Event(Event.VIEW_CHANGE, global_view)); } } catch(Exception e) { log.error(Util.getMessage("FailedInstallingView"), e); } return null; }