On Thu, Jan 02, 2020 at 05:46:31PM +0000, Ryan Moeller wrote: > Signed-off-by: Ryan Moeller <ryan@xxxxxxxxxxxxx> > --- > src/bhyve/bhyve_monitor.c | 144 ++++++++++++++++++++++++++------------ > 1 file changed, 98 insertions(+), 46 deletions(-) FWIW, we're aiming to replace virClass with GObject, but since you've already done the work here I'm not going to reject it for that reason. > > diff --git a/src/bhyve/bhyve_monitor.c b/src/bhyve/bhyve_monitor.c > index 0e55e19772..566c672ba0 100644 > --- a/src/bhyve/bhyve_monitor.c > +++ b/src/bhyve/bhyve_monitor.c > @@ -32,24 +32,82 @@ > #include "virerror.h" > #include "virfile.h" > #include "virlog.h" > +#include "virobject.h" > > #define VIR_FROM_THIS VIR_FROM_BHYVE > > VIR_LOG_INIT("bhyve.bhyve_monitor"); > > struct _bhyveMonitor { > + virObject parent; > + > int kq; > int watch; > bhyveConnPtr driver; > + virDomainObjPtr vm; > }; > > +static virClassPtr bhyveMonitorClass; > + > +static void > +bhyveMonitorDispose(void *obj) > +{ > + bhyveMonitorPtr mon = obj; > + > + VIR_FORCE_CLOSE(mon->kq); > + virObjectUnref(mon->vm); > +} > + > +static int > +bhyveMonitorOnceInit(void) > +{ > + if (!VIR_CLASS_NEW(bhyveMonitor, virClassForObject())) > + return -1; > + > + return 0; > +} > + > +VIR_ONCE_GLOBAL_INIT(bhyveMonitor); > + > +static void bhyveMonitorIO(int, int, int, void *); > + > +static bool > +bhyveMonitorRegister(bhyveMonitorPtr mon) > +{ > + virObjectRef(mon); > + mon->watch = virEventAddHandle(mon->kq, > + VIR_EVENT_HANDLE_READABLE | > + VIR_EVENT_HANDLE_ERROR | > + VIR_EVENT_HANDLE_HANGUP, > + bhyveMonitorIO, > + mon, > + virObjectFreeCallback); > + if (mon->watch < 0) { > + VIR_DEBUG("failed to add event handle for mon %p", mon); > + virObjectUnref(mon); > + return false; > + } > + return true; > +} > + > +static void > +bhyveMonitorUnregister(bhyveMonitorPtr mon) > +{ > + if (mon->watch < 0) > + return; > + > + virEventRemoveHandle(mon->watch); > + mon->watch = -1; > +} These two new methods are really separate refactoring from the introduction of virClass. So as a future note, we'd generally prefer if this had been two patches, but I'm fine merging this one now. Reviewed-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list