
Hi
On Thu, Nov 10, 2011 at 09:33:42PM +0100, Marc-André Lureau wrote:
+ case PROP_PATH: + if (priv->path) + g_free(priv->path);
You can safely call g_free on a NULL pointer, this makes the code a bit simpler, there are several occurrences of this in the 2 patches.
Correct, I forgot. I will fix that.
+static GVirDomainInterfaceStats * +gvir_domain_interface_stats_copy(GVirDomainInterfaceStats *stats) +{ + return g_slice_dup(GVirDomainInterfaceStats, stats); +}
Do we really need to use GSlice here? I consider GSlice as something to use when you want to make many allocations of same-size objects, will we allocate many of these stats objects?
Yes, it's frequently allocated (1/second), and kept in memory too for history.
+typedef struct _GVirDomainInterfaceStats GVirDomainInterfaceStats; +struct _GVirDomainInterfaceStats +{ + gint64 rx_bytes; + gint64 rx_packets; + gint64 rx_errs; + gint64 rx_drop; + gint64 tx_bytes; + gint64 tx_packets; + gint64 tx_errs; + gint64 tx_drop; +};
2 questions about this: * should we use more explicit names (which probably means longer ones)?
I don't mind. I just copy&pasted libvirt here, which I like because you can directly map it to libvirt struct.
* how do we handle ABI compatibility the day we need to add fields to this struct?
It's only a returned structure, allocated by the lib, so I guess that's fine to append fields later, right? regards