Re: [libvirt-csharp][PATCH] Make examples works on monocompiled in 64 bits, simply the ConnectOpenAuth process, and finalise renaming

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2010/10/27  <arnaud.champion@xxxxxxxxxx>:
> Oops again, a little mistake again :S
>
> In mono, we can't loop thru ref array objects.
>
> Sorry
>
> Arnaud
> From: arnaud.champion@xxxxxxxxxx
> Sent: Wednesday, October 27, 2010 2:05 PM
> To: arnaud.champion@xxxxxxxxxx ; libvir-list@xxxxxxxxxx
> Subject: Re:  [libvirt-csharp][PATCH] Make examples works on
> monocompiled in 64 bits, simply the ConnectOpenAuth process,and finalise
> renaming
> Oops, I have made a little mistake that make the example not compiling. This
> patch make it works, sorry :S
> From: arnaud.champion@xxxxxxxxxx
> Sent: Wednesday, October 27, 2010 1:50 PM
> To: libvir-list@xxxxxxxxxx
> Subject:  [libvirt-csharp][PATCH] Make examples works on
> monocompiled in 64 bits, simply the ConnectOpenAuth process,and finalise
> renaming
> Hi,
>
> I have finally find the problem with examples on mono compiled in 64 bits.
> The problem was the "ToInt32" method of an IntPtr which failed on mono 64
> bits (have to use ToInt64 instead).
> This path solve this problem.
> Also, I have put marshaling complexity of the ConnectOpenAuth callback in
> bindings, this make the callback of ConnectOpenAuth more simple to achieve
> the authentification. In the example, the callback is treated like this :
>
> private static int AuthCallback(ref ConnectCredential[] creds, IntPtr
> cbdata)
> ÂÂÂÂÂÂÂ {
> ÂÂÂÂÂÂÂÂÂÂÂ AuthData authData = (AuthData)Marshal.PtrToStructure(cbdata,
> typeof(AuthData));
> ÂÂÂÂÂÂÂÂÂÂÂ foreach (ConnectCredential cred in creds)
> ÂÂÂÂÂÂÂÂÂÂÂ {
> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ switch (cred.type)
> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ {
> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ case ConnectCredentialType.VIR_CRED_AUTHNAME:
> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ // Fill the user name
> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ cred.Result = authData.user_name;
> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ break;
> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ case ConnectCredentialType.VIR_CRED_PASSPHRASE:
> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ // Fill the password
> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ cred.Result = authData.password;
> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ break;
> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ default:
> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ return -1;
> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ }
> ÂÂÂÂÂÂÂÂÂÂÂ }
> ÂÂÂÂÂÂÂÂÂÂÂ return 0;
> ÂÂÂÂÂÂÂ }
>
> The bindings user has no marshaling to do, and believe me, it's simpler.
>
> Finally, this patch finalize renaming.
>
> Best regards,
>
> Arnaud Champion
>

Okay, I smashed all three into one patch because the later two are
just incremental fixes for the first one. I also pulled this over from
your "add new sample virEventRegisterImpl" patch, because it's an
additional incremental fix.

diff --git a/examples/MonoDevelop/virConnectOpenAuth/MainWindow.cs
b/examples/MonoDevelop/virConnectOpenAuth/MainWindow.cs
index 0b8bbf8..ebccb11 100644
--- a/examples/MonoDevelop/virConnectOpenAuth/MainWindow.cs
+++ b/examples/MonoDevelop/virConnectOpenAuth/MainWindow.cs
@@ -139,6 +139,7 @@ public partial class MainWindow : Gtk.Window
         AuthData authData = (AuthData)Marshal.PtrToStructure(cbdata,
typeof(AuthData));
         for (int i = 0; i < creds.Length; i++)
         {
+            ConnectCredential cred = creds[i];
             switch (cred.type)
             {
                 case ConnectCredentialType.VIR_CRED_AUTHNAME:

I had to rebase your patch onto the HEAD of
http://libvirt.org/git/?p=libvirt-csharp.git;a=summary and I removed
some trailing white spaces.

I tested it and it works on Ubuntu 64bit and I can connect to an ESX
server with the virConnectOpenAuth example.

I pushed the result.

Matthias

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]