]> git.ipfire.org Git - thirdparty/libvirt.git/commit
event: prepare client to track domain callbackID
authorEric Blake <eblake@redhat.com>
Wed, 8 Jan 2014 04:00:54 +0000 (21:00 -0700)
committerEric Blake <eblake@redhat.com>
Wed, 12 Feb 2014 17:48:15 +0000 (10:48 -0700)
commitcaaf6ba1b6e21519ac58a3b79e347f48ff6fe0f0
treeeab165b001c6f2f34448fb6a77abcc8fa484003a
parent0372295770399e31ddaf213137f4ec190243ef15
event: prepare client to track domain callbackID

We want to convert over to server-side events, even for older
APIs.  To do that, the client side of the remote driver wants
to distinguish between legacy virConnectDomainEventRegister and
normal virConnectDomainEventRegisterAny, while knowing the
client callbackID and the server's serverID for both types of
registration.  The client also needs to probe whether the
server supports server-side filtering.  However, for ease of
review, we don't actually use the new RPCs until a later patch.

* src/conf/object_event_private.h (virObjectEventStateCallbackID):
Add parameter.
* src/conf/object_event.c (virObjectEventCallbackListAddID)
(virObjectEventStateRegisterID): Separate legacy from callbackID.
(virObjectEventStateCallbackID): Pass through parameter.
(virObjectEventCallbackLookup): Let legacy and global domain
lifecycle events share a common remoteID.
* src/conf/network_event.c (virNetworkEventStateRegisterID):
Update caller.
* src/conf/domain_event.c (virDomainEventStateRegister)
(virDomainEventStateRegisterID, virDomainEventStateDeregister):
Likewise.
(virDomainEventStateRegisterClient)
(virDomainEventStateCallbackID): Implement new functions.
* src/conf/domain_event.h (virDomainEventStateRegisterClient)
(virDomainEventStateCallbackID): New prototypes.
* src/remote/remote_driver.c (private_data): Add field.
(doRemoteOpen): Probe server feature.
(remoteConnectDomainEventRegister)
(remoteConnectDomainEventRegisterAny): Use new function.

Signed-off-by: Eric Blake <eblake@redhat.com>
src/conf/domain_event.c
src/conf/domain_event.h
src/conf/network_event.c
src/conf/object_event.c
src/conf/object_event_private.h
src/remote/remote_driver.c