BLE: Add API to test the presence of an event handler in a chain.

pull/14256/head
Vincent Coubard 2021-02-09 19:43:33 +00:00
parent aa561ee8f5
commit edd7678cfc
1 changed files with 19 additions and 3 deletions

View File

@ -71,14 +71,14 @@ public:
* *
* @param[in] event_handler Pointer to event handler to remove * @param[in] event_handler Pointer to event handler to remove
*/ */
void removeEventHandler(T* target) { void removeEventHandler(T* event_handler) {
node_t* to_remove = head; node_t* to_remove = head;
if(head->eh == target) { if(head->eh == event_handler) {
head = head->next; head = head->next;
} else { } else {
auto* it = head; auto* it = head;
while(it->next) { while(it->next) {
if(it->next->eh == target) { if(it->next->eh == event_handler) {
to_remove = it->next; to_remove = it->next;
break; break;
} }
@ -94,6 +94,22 @@ public:
delete to_remove; delete to_remove;
} }
/**
* Test if an event handler is present in the chain or not.
*
* @param[in] event_handler Pointer to event handler to check
*/
bool isEventHandlerPresent(T* event_handler) {
auto* it = head;
while (it) {
if (it == event_handler) {
return true;
}
it = it->next;
}
return false;
}
protected: protected:
template<typename... FnArgs, typename... Args> template<typename... FnArgs, typename... Args>