}
+void
+virDomainObjListCollectAll(virDomainObjList *domlist,
+ virDomainObj ***vms,
+ size_t *nvms)
+{
+ struct virDomainListData data = { NULL, 0 };
+
+ virObjectRWLockRead(domlist);
+ data.vms = g_new0(virDomainObj *, virHashSize(domlist->objs));
+
+ virHashForEach(domlist->objs, virDomainObjListCollectIterator, &data);
+ virObjectRWUnlock(domlist);
+
+ *nvms = data.nvms;
+ *vms = data.vms;
+}
+
+
static void
virDomainObjListFilter(virDomainObj ***list,
size_t *nvms,
virDomainObjListACLFilter filter,
unsigned int flags)
{
- struct virDomainListData data = { NULL, 0 };
-
- virObjectRWLockRead(domlist);
- data.vms = g_new0(virDomainObj *, virHashSize(domlist->objs));
-
- virHashForEach(domlist->objs, virDomainObjListCollectIterator, &data);
- virObjectRWUnlock(domlist);
-
- virDomainObjListFilter(&data.vms, &data.nvms, conn, filter, flags);
-
- *nvms = data.nvms;
- *vms = data.vms;
+ virDomainObjListCollectAll(domlist, vms, nvms);
+ virDomainObjListFilter(vms, nvms, conn, filter, flags);
return 0;
}
VIR_CONNECT_LIST_DOMAINS_FILTERS_SNAPSHOT | \
VIR_CONNECT_LIST_DOMAINS_FILTERS_CHECKPOINT)
+void
+virDomainObjListCollectAll(virDomainObjList *domlist,
+ virDomainObj ***vms,
+ size_t *nvms);
int
virDomainObjListCollect(virDomainObjList *doms,
virConnectPtr conn,