ZTracer::Endpoint trace_endpoint;
+ static void insert_head(std::vector<PriorityDispatcher>& v,
+ PriorityDispatcher d)
+ {
+ v.insert(std::lower_bound(v.begin(), v.end(), d), d);
+ }
+ static void insert_tail(std::vector<PriorityDispatcher>& v,
+ PriorityDispatcher d)
+ {
+ v.insert(std::upper_bound(v.begin(), v.end(), d), d);
+ }
+
protected:
void set_endpoint_addr(const entity_addr_t& a,
const entity_name_t &name);
*/
void add_dispatcher_head(Dispatcher *d, PriorityDispatcher::priority_t priority=Dispatcher::PRIORITY_DEFAULT) {
bool first = dispatchers.empty();
- dispatchers.insert(dispatchers.begin(), PriorityDispatcher{priority, d});
- std::stable_sort(dispatchers.begin(), dispatchers.end());
+ const PriorityDispatcher entry{priority, d};
+ insert_head(dispatchers, entry);
if (d->ms_can_fast_dispatch_any()) {
- fast_dispatchers.insert(fast_dispatchers.begin(), PriorityDispatcher{priority, d});
- std::stable_sort(fast_dispatchers.begin(), fast_dispatchers.end());
+ insert_head(fast_dispatchers, entry);
}
if (first)
ready();
*/
void add_dispatcher_tail(Dispatcher *d, PriorityDispatcher::priority_t priority=Dispatcher::PRIORITY_DEFAULT) {
bool first = dispatchers.empty();
- dispatchers.push_back(PriorityDispatcher{priority, d});
- std::stable_sort(dispatchers.begin(), dispatchers.end());
+ const PriorityDispatcher entry{priority, d};
+ insert_tail(dispatchers, entry);
if (d->ms_can_fast_dispatch_any()) {
- fast_dispatchers.push_back(PriorityDispatcher{priority, d});
- std::stable_sort(fast_dispatchers.begin(), fast_dispatchers.end());
+ insert_tail(fast_dispatchers, entry);
}
if (first)
ready();