MCPcopy Create free account
hub / github.com/OpenDDS/OpenDDS / find

Method find

dds/DCPS/MemoryPool.cpp:208–240  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

206}
207
208FreeHeader*
209FreeIndex::find(size_t search_size, unsigned char* pool_base)
210{
211 unsigned int index = node_index(search_size);
212 FreeIndexNode* index_node = nodes_ + index;
213
214 // Larger or equal to search_size
215 FreeHeader* result = NULL;
216 if (largest_free_ && (largest_free_->size() >= search_size)) {
217 result = largest_free_;
218
219 // Look from here and larger
220 while (index_node < nodes_ + size_) {
221 if (index_node->ptr() && index_node->ptr()->size() >= search_size) {
222 result = index_node->ptr();
223 break;
224 }
225 ++index_node;
226 }
227 }
228
229 // Now traverse, searching for smaller than result
230 while (result) {
231 FreeHeader* smaller = result->smaller_free(pool_base);
232 if (smaller && smaller->size() >= search_size) {
233 result = smaller;
234 } else {
235 break;
236 }
237 }
238
239 return result;
240}
241
242unsigned int
243FreeIndex::node_index(size_t size)

Callers 15

parse_addressMethod · 0.45
parse_addressMethod · 0.45
ACE_TMAINFunction · 0.45
unregisterMethod · 0.45
way_point_reachedMethod · 0.45
formatMethod · 0.45
formatMethod · 0.45
parseMethod · 0.45
check_for_iperfMethod · 0.45
formatMethod · 0.45
on_datareader_reportMethod · 0.45

Calls 3

smaller_freeMethod · 0.80
sizeMethod · 0.45
ptrMethod · 0.45

Tested by 3

parse_addressMethod · 0.36
parse_addressMethod · 0.36