/** * Returns the creator of this view * if this view was created with the empty constructur, null will be returned * @return the creator of this view in form of an Address object */ public Address getCreator() {return view_id.getCreator();}
protected View generateGlobalView(View local_view, View remote_view, boolean merge) { List<View> views=new ArrayList<>(2); if(local_view != null) views.add(local_view); if(remote_view != null) views.add(remote_view); Collections.sort(views, (v1, v2) -> { ViewId vid1=v1.getViewId(), vid2=v2.getViewId(); Address creator1=vid1.getCreator(), creator2=vid2.getCreator(); int rc=creator1.compareTo(creator2); if(rc != 0) return rc; long id1=vid1.getId(), id2=vid2.getId(); return id1 > id2 ? 1 : id1 < id2? -1 : 0; }); List<Address> combined_members=new ArrayList<>(); for(View view: views) combined_members.addAll(view.getMembers()); long new_view_id; synchronized(this) { new_view_id=global_view_id++; } Address view_creator=combined_members.isEmpty()? local_addr : combined_members.get(0); if(merge) return new MergeView(view_creator, new_view_id, combined_members, views); else return new View(view_creator, new_view_id, combined_members); }
/** * Returns the creator of this view * if this view was created with the empty constructur, null will be returned * @return the creator of this view in form of an Address object */ public Address getCreator() {return view_id.getCreator();}
protected View generateGlobalView(View local_view, View remote_view, boolean merge) { List<View> views=new ArrayList<>(2); if(local_view != null) views.add(local_view); if(remote_view != null) views.add(remote_view); Collections.sort(views, (v1, v2) -> { ViewId vid1=v1.getViewId(), vid2=v2.getViewId(); Address creator1=vid1.getCreator(), creator2=vid2.getCreator(); int rc=creator1.compareTo(creator2); if(rc != 0) return rc; long id1=vid1.getId(), id2=vid2.getId(); return id1 > id2 ? 1 : id1 < id2? -1 : 0; }); List<Address> combined_members=new ArrayList<>(); for(View view: views) combined_members.addAll(view.getMembers()); long new_view_id; synchronized(this) { new_view_id=global_view_id++; } Address view_creator=combined_members.isEmpty()? local_addr : combined_members.get(0); if(merge) return new MergeView(view_creator, new_view_id, combined_members, views); else return new View(view_creator, new_view_id, combined_members); }