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

Method Reset

src/brpc/parallel_channel.cpp:523–557  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

521};
522
523void ParallelChannel::Reset() {
524 // Removal of channels are a little complex because a channel may be
525 // added multiple times.
526
527 // Dereference call_mapper and mergers first.
528 for (size_t i = 0; i < _chans.size(); ++i) {
529 _chans[i].call_mapper.reset();
530 _chans[i].merger.reset();
531 }
532
533 // Remove not own-ed channels.
534 for (size_t i = 0; i < _chans.size();) {
535 if (_chans[i].ownership != OWNS_CHANNEL) {
536 _chans[i] = _chans.back();
537 _chans.pop_back();
538 } else {
539 ++i;
540 }
541 }
542
543 if (_chans.empty()) {
544 return;
545 }
546
547 // Sort own-ed channels so that we can deduplicate them more efficiently.
548 std::sort(_chans.begin(), _chans.end(), SortByChannelPtr());
549 const size_t uniq_size =
550 std::unique(_chans.begin(), _chans.end(), EqualChannelPtr())
551 - _chans.begin();
552 for (size_t i = 0; i < uniq_size; ++i) {
553 CHECK_EQ(_chans[i].ownership, OWNS_CHANNEL);
554 delete _chans[i].chan;
555 }
556 _chans.clear();
557}
558
559ParallelChannel::~ParallelChannel() {
560 Reset();

Callers

nothing calls this directly

Calls 10

SortByChannelPtrClass · 0.85
EqualChannelPtrClass · 0.85
sizeMethod · 0.45
resetMethod · 0.45
backMethod · 0.45
pop_backMethod · 0.45
emptyMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected