On 13.10.2015 15:38, Erik Skultety wrote:
As we plan to add more and more logic to remote connecting methods,
these cannot be generated from admin_protocol.x anymore. Instead,
this patch implements these to methods explicitly.
---
src/admin/admin_protocol.x | 4 ++--
src/libvirt-admin.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 47 insertions(+), 2 deletions(-)
diff --git a/src/admin/admin_protocol.x b/src/admin/admin_protocol.x
index cfc92ff..d0ca1a3 100644
--- a/src/admin/admin_protocol.x
+++ b/src/admin/admin_protocol.x
@@ -64,12 +64,12 @@ enum admin_procedure {
* in the function parameter list.
*/
/**
- * @generate: client
+ * @generate: none
*/
ADMIN_PROC_CONNECT_OPEN = 1,
/**
- * @generate: client
+ * @generate: none
*/
ADMIN_PROC_CONNECT_CLOSE = 2
};
diff --git a/src/libvirt-admin.c b/src/libvirt-admin.c
index f0824dd..e12e2b8 100644
--- a/src/libvirt-admin.c
+++ b/src/libvirt-admin.c
@@ -126,6 +126,51 @@ call(virAdmConnectPtr conn,
static bool virAdmGlobalError;
static virOnceControl virAdmGlobalOnce = VIR_ONCE_CONTROL_INITIALIZER;
+static int
+remoteAdminConnectOpen(virAdmConnectPtr conn, unsigned int flags)
+{
+ int rv = -1;
+ remoteAdminPrivPtr priv = conn->privateData;
+ admin_connect_open_args args;
+
+ virObjectLock(priv);
+
+ args.flags = flags;
+
+ if (call(conn, 0, ADMIN_PROC_CONNECT_OPEN,
+ (xdrproc_t)xdr_admin_connect_open_args, (char *)&args,
+ (xdrproc_t)xdr_void, (char *)NULL) == -1) {
+ goto done;
+ }
+
+ rv = 0;
+
+ done:
+ virObjectUnlock(priv);
+ return rv;
+}
+
+static int
+remoteAdminConnectClose(virAdmConnectPtr conn)
+{
+ int rv = -1;
+ remoteAdminPrivPtr priv = conn->privateData;
+
+ virObjectLock(priv);
+
+ if (call(conn, 0, ADMIN_PROC_CONNECT_CLOSE,
+ (xdrproc_t)xdr_void, (char *)NULL,
+ (xdrproc_t)xdr_void, (char *)NULL) == -1) {
+ goto done;
+ }
+
+ rv = 0;
+
+ done:
+ virObjectUnlock(priv);
+ return rv;
+}
+
static void
remoteAdminPrivFree(void *opaque)
{
I don't want to be picky, but these should really go into a separate
file. Perhaps somewhere under src/admin/?
Michal