MCPcopy Create free account
hub / github.com/apache/trafficserver / lookup

Method lookup

src/tscore/ConsistentHash.cc:68–122  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

66}
67
68ATSConsistentHashNode *
69ATSConsistentHash::lookup(const char *url, ATSConsistentHashIter *i, bool *w, ATSHash64 *h)
70{
71 uint64_t url_hash;
72 ATSConsistentHashIter NodeMapIterUp, *iter;
73 ATSHash64 *thash;
74 bool *wptr, wrapped = false;
75
76 if (h) {
77 thash = h;
78 } else if (hash) {
79 thash = hash;
80 } else {
81 return nullptr;
82 }
83
84 if (w) {
85 wptr = w;
86 } else {
87 wptr = &wrapped;
88 }
89
90 if (i) {
91 iter = i;
92 } else {
93 iter = &NodeMapIterUp;
94 }
95
96 if (url) {
97 thash->update(url, strlen(url));
98 thash->final();
99 url_hash = thash->get();
100 thash->clear();
101
102 *iter = NodeMap.lower_bound(url_hash);
103
104 if (*iter == NodeMap.end()) {
105 *wptr = true;
106 *iter = NodeMap.begin();
107 }
108 } else {
109 (*iter)++;
110 }
111
112 if (!(*wptr) && *iter == NodeMap.end()) {
113 *wptr = true;
114 *iter = NodeMap.begin();
115 }
116
117 if (*wptr && *iter == NodeMap.end()) {
118 return nullptr;
119 }
120
121 return (*iter)->second;
122}
123
124ATSConsistentHashNode *
125ATSConsistentHash::lookup_available(const char *url, ATSConsistentHashIter *i, bool *w, ATSHash64 *h)

Callers

nothing calls this directly

Calls 7

lower_boundMethod · 0.80
updateMethod · 0.45
finalMethod · 0.45
getMethod · 0.45
clearMethod · 0.45
endMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected