Comment 1 for bug 385254

Revision history for this message
Kevron Rees (tripzero) wrote :

Example code to reproduce the bug:

using System;
using System.Collections.Generic;
using NDesk.DBus;

namespace testNMDbus
{
 public class NetworkManagerSettings
 {
  private INetworkManagerSettings nms;
  private Connection DBusConnection;
  public NetworkManagerSettings()
  {
   DBusConnection = Bus.System;
   nms = DBusConnection.GetObject<INetworkManagerSettings>("org.freedesktop.NetworkManagerUserSettings", new ObjectPath("/org/freedesktop/NetworkManagerSettings"));
  }

  public ObjectPath[] ListConnections()
  {
   return nms.ListConnections();
  }
 }

 [Interface("org.freedesktop.NetworkManagerSettings")]
 public interface INetworkManagerSettings
 {
     ObjectPath[] ListConnections();
 }

 public delegate void UpdatedSettingsHandler(Dictionary<string, Dictionary<string, object>> properties);

 public class NetworkManagerSettingsConnection
 {
  private Connection DBusConnection;
  public INetworkManagerSettingsConnection nmsc;
  public NetworkManagerSettingsConnection(ObjectPath connectionPath)
  {
   DBusConnection = Bus.System;
   nmsc = DBusConnection.GetObject<INetworkManagerSettingsConnection>("org.freedesktop.NetworkManagerUserSettings", connectionPath);
  }
 }

 [Interface("org.freedesktop.NetworkManagerSettings.Connection")]
 public interface INetworkManagerSettingsConnection
 {
     Dictionary<string, Dictionary<string, object>> GetSettings();
     void Delete();
     void Update(Dictionary<string, Dictionary<string, object>> properties);
     event EventHandler Removed;
     event UpdatedSettingsHandler Updated;

 }

 class MainClass
 {
  public static void Main(string[] args)
  {
   NetworkManagerSettingsConnection connection = new NetworkManagerSettingsConnection(new ObjectPath("/org/freedesktop/NetworkManagerSettings/10"));

   Dictionary<string,Dictionary<string,object>> settings = connection.nmsc.GetSettings();

   foreach(string key in settings.Keys)
   {
    Console.WriteLine(key+":");
    foreach(string setting in settings[key].Keys)
    {
     object value = settings[key][setting];
     Console.WriteLine("\t"+setting+" = "+value.ToString());
    }
   }
  }
 }
}