Skip to content

Commit 60cd2bc

Browse files
authored
Merge pull request ceph#58631 from cbodley/wip-66336
msg: insert PriorityDispatchers in sorted position Reviewed-by: Venky Shankar <[email protected]> Reviewed-by: Patrick Donnelly <[email protected]>
2 parents a2c6016 + 063d100 commit 60cd2bc

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

src/msg/Messenger.h

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,17 @@ class Messenger {
106106

107107
ZTracer::Endpoint trace_endpoint;
108108

109+
static void insert_head(std::vector<PriorityDispatcher>& v,
110+
PriorityDispatcher d)
111+
{
112+
v.insert(std::lower_bound(v.begin(), v.end(), d), d);
113+
}
114+
static void insert_tail(std::vector<PriorityDispatcher>& v,
115+
PriorityDispatcher d)
116+
{
117+
v.insert(std::upper_bound(v.begin(), v.end(), d), d);
118+
}
119+
109120
protected:
110121
void set_endpoint_addr(const entity_addr_t& a,
111122
const entity_name_t &name);
@@ -401,11 +412,10 @@ class Messenger {
401412
*/
402413
void add_dispatcher_head(Dispatcher *d, PriorityDispatcher::priority_t priority=Dispatcher::PRIORITY_DEFAULT) {
403414
bool first = dispatchers.empty();
404-
dispatchers.insert(dispatchers.begin(), PriorityDispatcher{priority, d});
405-
std::stable_sort(dispatchers.begin(), dispatchers.end());
415+
const PriorityDispatcher entry{priority, d};
416+
insert_head(dispatchers, entry);
406417
if (d->ms_can_fast_dispatch_any()) {
407-
fast_dispatchers.insert(fast_dispatchers.begin(), PriorityDispatcher{priority, d});
408-
std::stable_sort(fast_dispatchers.begin(), fast_dispatchers.end());
418+
insert_head(fast_dispatchers, entry);
409419
}
410420
if (first)
411421
ready();
@@ -419,11 +429,10 @@ class Messenger {
419429
*/
420430
void add_dispatcher_tail(Dispatcher *d, PriorityDispatcher::priority_t priority=Dispatcher::PRIORITY_DEFAULT) {
421431
bool first = dispatchers.empty();
422-
dispatchers.push_back(PriorityDispatcher{priority, d});
423-
std::stable_sort(dispatchers.begin(), dispatchers.end());
432+
const PriorityDispatcher entry{priority, d};
433+
insert_tail(dispatchers, entry);
424434
if (d->ms_can_fast_dispatch_any()) {
425-
fast_dispatchers.push_back(PriorityDispatcher{priority, d});
426-
std::stable_sort(fast_dispatchers.begin(), fast_dispatchers.end());
435+
insert_tail(fast_dispatchers, entry);
427436
}
428437
if (first)
429438
ready();

0 commit comments

Comments
 (0)