|
From: | Michael Roth |
Subject: | [Qemu-devel] Re: [RFC][PATCH v5 03/21] virtagent: common code for managing client/server rpc jobs |
Date: | Mon, 06 Dec 2010 16:15:00 -0600 |
User-agent: | Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.2.12) Gecko/20101027 Thunderbird/3.1.6 |
On 12/06/2010 03:54 PM, Adam Litke wrote:
On Fri, 2010-12-03 at 12:03 -0600, Michael Roth wrote:+/* create new client job and then put it on the queue. this can be + * called externally from virtagent. Since there can only be one virtagent + * instance we access state via an object-scoped global rather than pass + * it around. + * + * if this is successful virtagent will handle cleanup of req_xml after + * making the appropriate callbacks, otherwise callee should handle it + */Explain please. Do you mean caller should handle it? Are you trying to say that this function, when successful, "steals" the reference to req_xml?
Yup, should be caller. And yes, cleanup duty gets taken over if the call succeeds (after transmitting the request we have no need for the req_xml, so it didn't seem to make sense to carry it around just so the caller can free it when it gets it's call later on)
+int va_client_job_add(xmlrpc_mem_block *req_xml, VAClientCallback *cb, + MonitorCompletion *mon_cb, void *mon_data) +{ + int ret; + VAClientJob *client_job; + TRACE("called"); + + client_job = va_client_job_new(req_xml, cb, mon_cb, mon_data); + if (client_job == NULL) { + return -EINVAL; + } + + ret = va_push_client_job(client_job); + if (ret != 0) { + LOG("error adding client to queue: %s", strerror(ret)); + qemu_free(client_job); + return ret; + } + + return 0; +}
[Prev in Thread] | Current Thread | [Next in Thread] |