提交 850792f2 编写于 作者: J John Ferlan

secret: Split apart NumOfSecrets and GetUUIDs callback function

Rather than overloading one function - split apart the logic to have
separate interfaces and local/private structures to manage the data
for which the helper is collecting.
Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
上级 05f3a911
......@@ -433,7 +433,36 @@ virSecretObjListAdd(virSecretObjListPtr secrets,
}
struct virSecretObjListGetHelperData {
struct virSecretCountData {
virConnectPtr conn;
virSecretObjListACLFilter aclfilter;
int count;
};
static int
virSecretObjListNumOfSecretsCallback(void *payload,
const void *name ATTRIBUTE_UNUSED,
void *opaque)
{
struct virSecretCountData *data = opaque;
virSecretObjPtr obj = payload;
virSecretDefPtr def;
virObjectLock(obj);
def = obj->def;
if (data->aclfilter && !data->aclfilter(data->conn, def))
goto cleanup;
data->count++;
cleanup:
virObjectUnlock(obj);
return 0;
}
struct virSecretListData {
virConnectPtr conn;
virSecretObjListACLFilter aclfilter;
int nuuids;
......@@ -444,11 +473,11 @@ struct virSecretObjListGetHelperData {
static int
virSecretObjListGetHelper(void *payload,
const void *name ATTRIBUTE_UNUSED,
void *opaque)
virSecretObjListGetUUIDsCallback(void *payload,
const void *name ATTRIBUTE_UNUSED,
void *opaque)
{
struct virSecretObjListGetHelperData *data = opaque;
struct virSecretListData *data = opaque;
virSecretObjPtr obj = payload;
virSecretDefPtr def;
......@@ -473,11 +502,9 @@ virSecretObjListGetHelper(void *payload,
}
virUUIDFormat(def->uuid, uuidstr);
data->uuids[data->nuuids] = uuidstr;
data->uuids[data->nuuids++] = uuidstr;
}
data->nuuids++;
cleanup:
virObjectUnlock(obj);
return 0;
......@@ -489,15 +516,14 @@ virSecretObjListNumOfSecrets(virSecretObjListPtr secrets,
virSecretObjListACLFilter aclfilter,
virConnectPtr conn)
{
struct virSecretObjListGetHelperData data = {
.conn = conn, .aclfilter = aclfilter, .nuuids = 0,
.uuids = NULL, .maxuuids = -1, .error = false };
struct virSecretCountData data = {
.conn = conn, .aclfilter = aclfilter, .count = 0 };
virObjectLock(secrets);
virHashForEach(secrets->objs, virSecretObjListGetHelper, &data);
virHashForEach(secrets->objs, virSecretObjListNumOfSecretsCallback, &data);
virObjectUnlock(secrets);
return data.nuuids;
return data.count;
}
......@@ -626,12 +652,12 @@ virSecretObjListGetUUIDs(virSecretObjListPtr secrets,
virSecretObjListACLFilter aclfilter,
virConnectPtr conn)
{
struct virSecretObjListGetHelperData data = {
.conn = conn, .aclfilter = aclfilter, .nuuids = 0,
.uuids = uuids, .maxuuids = maxuuids, .error = false };
struct virSecretListData data = {
.conn = conn, .aclfilter = aclfilter, .uuids = uuids, .nuuids = 0,
.maxuuids = maxuuids, .error = false };
virObjectLock(secrets);
virHashForEach(secrets->objs, virSecretObjListGetHelper, &data);
virHashForEach(secrets->objs, virSecretObjListGetUUIDsCallback, &data);
virObjectUnlock(secrets);
if (data.error)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册