protected void CrawlHandler(object o, EventArgs ea)
{
Address addr = Node.Address;
Channel q = (Channel) o;
try {
RpcResult res = (RpcResult) q.Dequeue();
Hashtable ht = (Hashtable) res.Result;
Address left = AddressParser.Parse((String) ht["left"]);
Address next = AddressParser.Parse((String) ht["right"]);
Address current = AddressParser.Parse((String) ht["self"]);
if(left.Equals(_previous)) {
_consistency++;
} else if(_previous == null) {
_first_left = left;
}
if(current.Equals(_first_left) && Node.Address.Equals(next)) {
_consistency++;
}
_previous = current;
addr = next;
} catch {}
CrawlNext(addr);
}