public String toString() { int[] num=numResponses(); return String.format("%d rsps (%d coords) [%s]", num[0], num[1], (isDone()? "done" : "pending")); }
/** Removes responses which are done or whose timeout has expired (in the latter case, an expired response is marked as done) */ @ManagedOperation(description="Removes expired or completed responses") public void weedOutCompletedDiscoveryResponses() { synchronized(ping_responses) { for(Iterator<Map.Entry<Long,Responses>> it=ping_responses.entrySet().iterator(); it.hasNext();) { Map.Entry<Long,Responses> entry=it.next(); long timestamp=entry.getKey(); Responses rsps=entry.getValue(); if(rsps.isDone() || TimeUnit.MILLISECONDS.convert(System.nanoTime() - timestamp, TimeUnit.NANOSECONDS) > discovery_rsp_expiry_time) { it.remove(); rsps.done(); clearRequestFutures(); } } } }
@ManagedOperation(description="Runs the discovery protocol to find initial members") public String findInitialMembersAsString() { Responses rsps=findMembers(null, false, false, 0); if(!rsps.isDone()) rsps.waitFor(300); if(rsps.isEmpty()) return "<empty>"; StringBuilder sb=new StringBuilder(); for(PingData rsp: rsps) sb.append(rsp).append("\n"); return sb.toString(); }
protected void addResponse(PingData rsp, boolean overwrite) { if(discovery_rsp_callback != null) { try { discovery_rsp_callback.accept(rsp); } catch(Throwable t) { log.error("%s: failed invoking callback for discovery response: %s", local_addr, t); } } synchronized(ping_responses) { for(Iterator<Map.Entry<Long,Responses>> it=ping_responses.entrySet().iterator(); it.hasNext();) { Map.Entry<Long,Responses> entry=it.next(); long timestamp=entry.getKey(); Responses rsps=entry.getValue(); rsps.addResponse(rsp, overwrite); if(rsps.isDone() || TimeUnit.MILLISECONDS.convert(System.nanoTime() - timestamp, TimeUnit.NANOSECONDS) > discovery_rsp_expiry_time) { it.remove(); rsps.done(); clearRequestFutures(); } } } }
public String toString() { int[] num=numResponses(); return String.format("%d rsps (%d coords) [%s]", num[0], num[1], (isDone()? "done" : "pending")); }
/** Removes responses which are done or whose timeout has expired (in the latter case, an expired response is marked as done) */ @ManagedOperation(description="Removes expired or completed responses") public void weedOutCompletedDiscoveryResponses() { synchronized(ping_responses) { for(Iterator<Map.Entry<Long,Responses>> it=ping_responses.entrySet().iterator(); it.hasNext();) { Map.Entry<Long,Responses> entry=it.next(); long timestamp=entry.getKey(); Responses rsps=entry.getValue(); if(rsps.isDone() || TimeUnit.MILLISECONDS.convert(System.nanoTime() - timestamp, TimeUnit.NANOSECONDS) > discovery_rsp_expiry_time) { it.remove(); rsps.done(); } } } }
@ManagedOperation(description="Runs the discovery protocol to find initial members") public String findInitialMembersAsString() { Responses rsps=findMembers(null, false, false); if(!rsps.isDone()) rsps.waitFor(300); if(rsps.isEmpty()) return "<empty>"; StringBuilder sb=new StringBuilder(); for(PingData rsp: rsps) sb.append(rsp).append("\n"); return sb.toString(); }
protected void addResponse(PingData rsp, boolean overwrite) { if(discovery_rsp_callback != null) { try { discovery_rsp_callback.accept(rsp); } catch(Throwable t) { log.error("%s: failed invoking callback for discovery response: %s", local_addr, t); } } synchronized(ping_responses) { for(Iterator<Map.Entry<Long,Responses>> it=ping_responses.entrySet().iterator(); it.hasNext();) { Map.Entry<Long,Responses> entry=it.next(); long timestamp=entry.getKey(); Responses rsps=entry.getValue(); rsps.addResponse(rsp, overwrite); if(rsps.isDone() || TimeUnit.MILLISECONDS.convert(System.nanoTime() - timestamp, TimeUnit.NANOSECONDS) > discovery_rsp_expiry_time) { it.remove(); rsps.done(); } } } }