public Object up(Event evt) { switch(evt.getType()) { case Event.SUSPECT: // it all starts here ... // todo: change to collections in 4.1 Collection<Address> s=evt.arg() instanceof Address? Collections.singletonList(evt.arg()) : evt.arg(); if(s == null) return null; s.remove(local_addr); // ignoring suspect of self if(use_icmp) s.forEach(this::verifySuspectWithICMP); else verifySuspect(s); return null; // don't pass up; we will decide later (after verification) whether to pass it up case Event.CONFIG: if(bind_addr == null) { Map<String,Object> config=evt.getArg(); bind_addr=(InetAddress)config.get("bind_addr"); } } return up_prot.up(evt); }
public Object down(Event evt) { switch(evt.type()) { case Event.SET_LOCAL_ADDRESS: local_addr=evt.arg(); break; case Event.VIEW_CHANGE: handleView(evt.arg()); break; case Event.FETCH_SECRET_KEY: Address target=evt.arg(); try { fetchSecretKeyFrom(target); } catch(Exception e) { // throw new RuntimeException(e); log.warn("failed fetching secret key from %s: %s", target, e); } return null; // the event is consumed and should not be passed further down } return down_prot.down(evt); }
public Object down(Event evt) { Object retval=super.down(evt); switch(evt.type()) { case Event.ADD_PHYSICAL_ADDRESS: Tuple<Address,PhysicalAddress> tuple=evt.arg(); IpAddress val=(IpAddress)tuple.getVal2(); addr_table.put(tuple.getVal1(), new InetSocketAddress(val.getIpAddress(), val.getPort())); break; case Event.VIEW_CHANGE: for(Iterator<Map.Entry<Address,SocketAddress>> it=addr_table.entrySet().iterator(); it.hasNext();) { Map.Entry<Address,SocketAddress> entry=it.next(); if(!view.containsMember(entry.getKey())) { SocketAddress sock_addr=entry.getValue(); it.remove(); Connection conn=connections.remove(sock_addr); Util.close(conn); } } break; } return retval; }
public Object down(Event evt) { switch(evt.getType()) { case Event.SET_LOCAL_ADDRESS: local_addr=evt.getArg(); break; case Event.VIEW_CHANGE: handleView(evt.arg()); break; } return down_prot.down(evt); }
public Object up(Event evt) { switch(evt.getType()) { case Event.SUSPECT: Object retval=up_prot.up(evt); // todo: change this to only accept lists in 4.1 Collection<Address> suspects=evt.arg() instanceof Address? Collections.singletonList(evt.arg()) : evt.arg(); Request[] suspect_reqs=new Request[suspects.size()]; int index=0; for(Address mbr: suspects) suspect_reqs[index++]=new Request(Request.SUSPECT, mbr); view_handler.add(suspect_reqs); ack_collector.suspect(suspects); merge_ack_collector.suspect(suspects); return retval; case Event.UNSUSPECT: impl.unsuspect(evt.getArg()); return null; // discard case Event.MERGE: view_handler.add(new Request(Request.MERGE, null, evt.getArg())); return null; // don't pass up case Event.IS_MERGE_IN_PROGRESS: return merger.isMergeInProgress(); } return up_prot.up(evt); }
public Object up(Event evt) { switch(evt.type()) { case Event.GET_SECRET_KEY: return new Tuple<>(secret_key, sym_version); case Event.SET_SECRET_KEY: Tuple<SecretKey,byte[]> tuple=evt.arg(); try { setKeys(null, tuple.getVal1(), tuple.getVal2()); } catch(Exception ex) { log.error("failed setting secret key", ex); } return null; } return up_prot.up(evt); }
unlockForce(evt.arg()); break;
Address tmp_addr=evt.arg(); if(tmp_addr != null) { this.local_addr=tmp_addr;
discovery_rsp_callback=evt.arg(); return findMembers(null, false, false, 0); // triggered by MERGE3
public Object up(Event evt) { switch(evt.getType()) { case Event.SUSPECT: // it all starts here ... // todo: change to collections in 4.1 Collection<Address> s=evt.arg() instanceof Address? Collections.singletonList(evt.arg()) : evt.arg(); if(s == null) return null; s.remove(local_addr); // ignoring suspect of self if(!use_icmp) verifySuspect(s); else s.forEach(this::verifySuspectWithICMP); return null; // don't pass up; we will decide later (after verification) whether to pass it up case Event.CONFIG: if(bind_addr == null) { Map<String,Object> config=evt.getArg(); bind_addr=(InetAddress)config.get("bind_addr"); } } return up_prot.up(evt); }
public Object down(Event evt) { switch(evt.type()) { case Event.SET_LOCAL_ADDRESS: local_addr=evt.arg(); break; case Event.VIEW_CHANGE: handleView(evt.arg()); break; case Event.FETCH_SECRET_KEY: Address target=evt.arg(); try { fetchSecretKeyFrom(target); } catch(Exception e) { // throw new RuntimeException(e); log.warn("failed fetching secret key from %s: %s", target, e); } return null; // the event is consumed and should not be passed further down } return down_prot.down(evt); }
public Object down(Event evt) { Object retval=super.down(evt); switch(evt.type()) { case Event.ADD_PHYSICAL_ADDRESS: Tuple<Address,PhysicalAddress> tuple=evt.arg(); IpAddress val=(IpAddress)tuple.getVal2(); addr_table.put(tuple.getVal1(), new InetSocketAddress(val.getIpAddress(), val.getPort())); break; case Event.VIEW_CHANGE: for(Iterator<Map.Entry<Address,SocketAddress>> it=addr_table.entrySet().iterator(); it.hasNext();) { Map.Entry<Address,SocketAddress> entry=it.next(); if(!view.containsMember(entry.getKey())) { SocketAddress sock_addr=entry.getValue(); it.remove(); Connection conn=connections.remove(sock_addr); Util.close(conn); } } break; } return retval; }
public Object down(Event evt) { switch(evt.getType()) { case Event.SET_LOCAL_ADDRESS: local_addr=evt.getArg(); break; case Event.VIEW_CHANGE: handleView(evt.arg()); break; } return down_prot.down(evt); }
public Object up(Event evt) { switch(evt.getType()) { case Event.SUSPECT: Object retval=up_prot.up(evt); // todo: change this to only accept lists in 4.1 Collection<Address> suspects=evt.arg() instanceof Address? Collections.singletonList(evt.arg()) : evt.arg(); Request[] suspect_reqs=new Request[suspects.size()]; int index=0; for(Address mbr: suspects) suspect_reqs[index++]=new Request(Request.SUSPECT, mbr); view_handler.add(suspect_reqs); ack_collector.suspect(suspects); merge_ack_collector.suspect(suspects); return retval; case Event.UNSUSPECT: impl.unsuspect(evt.getArg()); return null; // discard case Event.MERGE: view_handler.add(new Request(Request.MERGE, null, evt.getArg())); return null; // don't pass up case Event.IS_MERGE_IN_PROGRESS: return merger.isMergeInProgress(); } return up_prot.up(evt); }
@Override public Object down(Event evt) { Object retval = super.down(evt); switch (evt.getType()) { case Event.VIEW_CHANGE: for (Address logical_addr : view.getMembersRaw()) { PhysicalAddress physical_addr = (PhysicalAddress) down_prot .down(new Event(Event.GET_PHYSICAL_ADDRESS, logical_addr)); if (physical_addr != null) { discovered_hosts.addIfAbsent(physical_addr); } } break; case Event.SUSPECT: Collection<Address> addresses = evt.getArg() instanceof Address ? Collections.singletonList(evt.arg()) : evt.arg(); discovered_hosts.removeAll(addresses); break; case Event.ADD_PHYSICAL_ADDRESS: Tuple<Address, PhysicalAddress> tuple = evt.getArg(); PhysicalAddress physical_addr = tuple.getVal2(); if (physical_addr != null) discovered_hosts.addIfAbsent(physical_addr); break; } return retval; }
public Object up(Event evt) { switch(evt.type()) { case Event.GET_SECRET_KEY: return new Tuple<>(secret_key, sym_version); case Event.SET_SECRET_KEY: Tuple<SecretKey,byte[]> tuple=evt.arg(); try { setKeys(null, tuple.getVal1(), tuple.getVal2()); } catch(Exception ex) { log.error("failed setting secret key", ex); } return null; } return up_prot.up(evt); }
discovery_rsp_callback=evt.arg(); return findMembers(null, false, false); // triggered by MERGE3