/** * updates the request ranking */ private void updateRequest(PointingNode pNode, Url newRequest) { if (pNode == null || newRequest == null) { return; } LinkedListNode <RankNode> pLinkNode = pNode.getRankNode(); // the request has been token before if (pLinkNode == null) { return; } pLinkNode.Value.addReference(newRequest.getRank()); int newRank = Convert.ToInt32(pLinkNode.Value.calcRank()); if (newRank != pNode.getRankTableEntry().getRankLevel()) { RankNode rankNode = pLinkNode.Value; pNode.getRankTableEntry().removeNode(pLinkNode); pNode.setRankTableEntry(_rankLevels[newRank]); LinkedListNode <RankNode> newNode = pNode.getRankTableEntry().addFirstNode(rankNode); pNode.setRankNode(newNode); //if (newRank < _minRank) _minRank = newRank; //if (newRank > _maxRank) _maxRank = newRank; update(); } }
/** * returns the max ranked element (pop) */ public Url pop() { if (_count <= 0) { return(null); } RankNode rankNode = _rankLevels[_maxRank].readFirstNode(); _rankLevels[_maxRank].removeFirstNode(); bool match = _urlTrie.Matcher.NewMatch(rankNode.getRequest().getUrl().Trim()); if (match == true) { PointingNode pNode = _urlTrie.Matcher.GetExactMatch(); pNode.setRankTableEntry(null); pNode.setRankNode(null); } _count--; update(); Url request = rankNode.getRequest(); int rank = Convert.ToInt32(rankNode.calcRank()); return(new Url(request.getUrl(), request.getUrlHashCode(), rank, request.getDomain(), request.getDomainHashCode())); }
/** * adds the specfied node to the members of this level, and returns reference * to the warpper node */ public LinkedListNode <RankNode> addFirstNode(RankNode rankNode) { return(_nodeList.AddFirst(rankNode)); }
/** * adds the specfied node to the members of this level, and returns reference * to the warpper node */ public LinkedListNode<RankNode> addFirstNode(RankNode rankNode) { return _nodeList.AddFirst(rankNode); }