mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 12:35:17 +00:00
rpc: Introduce virNetServerGetProgramLocked helper function
This patch introduces virNetServerGetProgramLocked. It's a function to determine which program has to be used for a given @msg. This function will be reused in the next patch. Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com> Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
parent
be386854f5
commit
c306873841
@ -166,6 +166,26 @@ static void virNetServerHandleJob(void *jobOpaque, void *opaque)
|
||||
VIR_FREE(job);
|
||||
}
|
||||
|
||||
/**
|
||||
* virNetServerGetProgramLocked:
|
||||
* @srv: server (must be locked by the caller)
|
||||
* @msg: message
|
||||
*
|
||||
* Searches @srv for the right program for a given message @msg.
|
||||
*
|
||||
* Returns a pointer to the server program or NULL if not found.
|
||||
*/
|
||||
static virNetServerProgramPtr
|
||||
virNetServerGetProgramLocked(virNetServerPtr srv,
|
||||
virNetMessagePtr msg)
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0; i < srv->nprograms; i++) {
|
||||
if (virNetServerProgramMatches(srv->programs[i], msg))
|
||||
return srv->programs[i];
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
virNetServerDispatchNewMessage(virNetServerClientPtr client,
|
||||
@ -175,18 +195,12 @@ virNetServerDispatchNewMessage(virNetServerClientPtr client,
|
||||
virNetServerPtr srv = opaque;
|
||||
virNetServerProgramPtr prog = NULL;
|
||||
unsigned int priority = 0;
|
||||
size_t i;
|
||||
|
||||
VIR_DEBUG("server=%p client=%p message=%p",
|
||||
srv, client, msg);
|
||||
|
||||
virObjectLock(srv);
|
||||
for (i = 0; i < srv->nprograms; i++) {
|
||||
if (virNetServerProgramMatches(srv->programs[i], msg)) {
|
||||
prog = srv->programs[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
prog = virNetServerGetProgramLocked(srv, msg);
|
||||
/* we can unlock @srv since @prog can only become invalid in case
|
||||
* of disposing @srv, but let's grab a ref first to ensure nothing
|
||||
* disposes of it before we use it. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user