• E
    event: add notion of remoteID for filtering client network events · a59097e5
    Eric Blake 提交于
    In order to mirror a server with per-object filtering, the client
    needs to track which server callbackID is servicing the client
    callback.  This patch introduces the notion of a serverID, as
    well as the plumbing to use it for network events, although the
    actual complexity of using per-object filtering in the remote
    driver is deferred to a later patch.
    
    * src/conf/object_event.h (virObjectEventStateEventID): Add parameter.
    (virObjectEventStateQueueRemote, virObjectEventStateSetRemote):
    New prototypes.
    (virObjectEventStateRegisterID): Move...
    * src/conf/object_event_private.h: ...here, and add parameter.
    (_virObjectEvent): Add field.
    * src/conf/network_event.h (virNetworkEventStateRegisterClient): New
    prototype.
    * src/conf/object_event.c (_virObjectEventCallback): Add field.
    (virObjectEventStateSetRemote): New function.
    (virObjectEventStateQueue): Make wrapper around...
    (virObjectEventStateQueueRemote): New function.
    (virObjectEventCallbackListCount): Tweak return count when remote
    id matching is used.
    (virObjectEventCallbackLookup, virObjectEventStateRegisterID):
    Tweak registration when remote id matching will be used.
    (virObjectEventNew): Default to no remote id.
    (virObjectEventCallbackListAddID): Likewise, but set remote id
    when one is available.
    (virObjectEventCallbackListRemoveID)
    (virObjectEventCallbackListMarkDeleteID): Adjust return value when
    remote id was set.
    (virObjectEventStateEventID): Query existing id.
    (virObjectEventDispatchMatchCallback): Require matching event id.
    (virObjectEventStateCallbackID): Adjust caller.
    * src/conf/network_event.c (virNetworkEventStateRegisterClient): New
    function.
    (virNetworkEventStateRegisterID): Update caller.
    * src/conf/domain_event.c (virDomainEventStateRegister)
    (virDomainEventStateRegisterID): Update callers.
    * src/remote/remote_driver.c
    (remoteConnectNetworkEventRegisterAny)
    (remoteConnectNetworkEventDeregisterAny)
    (remoteConnectDomainEventDeregisterAny): Likewise.
    (remoteEventQueue): Hoist earlier to avoid forward declaration,
    and add parameter.  Adjust all callers.
    * src/libvirt_private.syms (conf/object_event.h): Drop function.
    Signed-off-by: NEric Blake <eblake@redhat.com>
    a59097e5
object_event.c 30.0 KB