static bool virObjectEventDispatchMatchCallback(virObjectEventPtr event, virObjectEventCallbackPtr cb) { if (!cb) return false; if (cb->deleted) return false; if (!virObjectIsClass(event, cb->klass)) return false; if (cb->eventID != event->eventID) return false; if (cb->remoteID != event->remoteID) return false; if (cb->filter && !(cb->filter)(cb->conn, event, cb->filter_opaque)) return false; if (cb->uuid_filter) { /* Deliberately ignoring 'id' for matching, since that * will cause problems when a domain switches between * running & shutoff states & ignoring 'name' since * Xen sometimes renames guests during migration, thus * leaving 'uuid' as the only truly reliable ID we can use. */ return memcmp(event->meta.uuid, cb->uuid, VIR_UUID_BUFLEN) == 0; } return true; }
static bool virObjectEventDispatchMatchCallback(virObjectEventPtr event, virObjectEventCallbackPtr cb) { if (!cb) return false; if (cb->deleted) return false; if (!virObjectIsClass(event, cb->klass)) return false; if (cb->eventID != event->eventID) return false; if (cb->remoteID != event->remoteID) return false; if (cb->filter && !(cb->filter)(cb->conn, event, cb->filter_opaque)) return false; if (cb->key_filter) return STREQ(event->meta.key, cb->key); return true; }