MCPcopy Create free account
hub / github.com/apache/brpc / PopFree

Method PopFree

src/brpc/selective_channel.cpp:437–465  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

435}
436
437inline Resource Sender::PopFree() {
438 if (_nfree == 0) {
439 if (_nalloc == 0) {
440 Resource r;
441 r.response = _response->New();
442 r.sub_done = &_sub_done0;
443 _alloc_resources[_nalloc++] = r;
444 return r;
445 } else if (_nalloc == 1) {
446 Resource r;
447 r.response = _response->New();
448 r.sub_done = new SubDone(this);
449 _alloc_resources[_nalloc++] = r;
450 return r;
451 } else {
452 CHECK(false) << "nalloc=" << _nalloc;
453 return Resource();
454 }
455 } else {
456 Resource r = _free_resources[--_nfree];
457 r.response->Clear();
458 Controller& sub_cntl = r.sub_done->_cntl;
459 ExcludedServers* saved_accessed = sub_cntl._accessed;
460 sub_cntl._accessed = NULL;
461 sub_cntl.Reset();
462 sub_cntl._accessed = saved_accessed;
463 return r;
464 }
465}
466
467inline bool Sender::PushFree(const Resource& r) {
468 if (_nfree < 2) {

Callers

nothing calls this directly

Calls 4

ResourceClass · 0.85
NewMethod · 0.45
ClearMethod · 0.45
ResetMethod · 0.45

Tested by

no test coverage detected