| 506 | } |
| 507 | |
| 508 | void EventCenter::dispatch_event_external(EventCallbackRef e) |
| 509 | { |
| 510 | uint64_t num = 0; |
| 511 | { |
| 512 | std::lock_guard lock{external_lock}; |
| 513 | if (external_num_events > 0 && *external_events.rbegin() == e) { |
| 514 | return; |
| 515 | } |
| 516 | external_events.push_back(e); |
| 517 | num = ++external_num_events; |
| 518 | } |
| 519 | if (num == 1 && !in_thread()) |
| 520 | wakeup(); |
| 521 | |
| 522 | ldout(cct, 30) << __func__ << " " << e << " pending " << num << dendl; |
| 523 | } |