*/
public synchronized void updateDirectState(IpAndPort byNode, NodeState stateInfo,
long requestTime, long responseTime,
long clusterInfoVersion)
{
ClusterServerNodeImpl localState = _nodes.get(byNode);
if (localState == null) { // new info
localState = new ClusterServerNodeImpl(_rootPathFor(byNode),
byNode, stateInfo.getRangeActive(), stateInfo.getRangePassive(),
_entryAccessors);
_addNode(byNode, localState);
}
boolean needInvalidate = localState.updateRanges(stateInfo.getRangeActive(),
stateInfo.getRangePassive());
if (localState.updateDisabled(stateInfo.isDisabled())) {
needInvalidate = true;
}
if (needInvalidate) {
invalidateRouting();
}
localState.setLastRequestSent(requestTime);
localState.setLastResponseReceived(responseTime);
localState.setLastNodeUpdateFetched(stateInfo.getLastUpdated());
localState.setLastClusterUpdateFetched(clusterInfoVersion);
}