diff options
author | John (J5) Palmieri <johnp@redhat.com> | 2006-07-14 16:20:12 +0000 |
---|---|---|
committer | John (J5) Palmieri <johnp@redhat.com> | 2006-07-14 16:20:12 +0000 |
commit | a929c9a3b465db8b7e17b9b39936c612c2621a7c (patch) | |
tree | d1764257d1bd56f8e6a044516ccfc9bc44f7f9f5 /mono/Connection.cs | |
parent | 5efe8e7f1d97931710558495a951e0b35afbfb72 (diff) |
* Remove all bindings
Diffstat (limited to 'mono/Connection.cs')
-rw-r--r-- | mono/Connection.cs | 354 |
1 files changed, 0 insertions, 354 deletions
diff --git a/mono/Connection.cs b/mono/Connection.cs deleted file mode 100644 index 5413c1c8..00000000 --- a/mono/Connection.cs +++ /dev/null @@ -1,354 +0,0 @@ -namespace DBus -{ - - using System; - using System.Runtime.InteropServices; - using System.Diagnostics; - using System.Reflection; - using System.IO; - using System.Collections; - - public delegate int DBusHandleMessageFunction (IntPtr rawConnection, - IntPtr rawMessage, - IntPtr userData); - - internal delegate void DBusObjectPathUnregisterFunction(IntPtr rawConnection, - IntPtr userData); - - internal delegate int DBusObjectPathMessageFunction(IntPtr rawConnection, - IntPtr rawMessage, - IntPtr userData); - - [StructLayout (LayoutKind.Sequential)] - internal struct DBusObjectPathVTable - { - public DBusObjectPathUnregisterFunction unregisterFunction; - public DBusObjectPathMessageFunction messageFunction; - public IntPtr padding1; - public IntPtr padding2; - public IntPtr padding3; - public IntPtr padding4; - - public DBusObjectPathVTable(DBusObjectPathUnregisterFunction unregisterFunction, - DBusObjectPathMessageFunction messageFunction) - { - this.unregisterFunction = unregisterFunction; - this.messageFunction = messageFunction; - this.padding1 = IntPtr.Zero; - this.padding2 = IntPtr.Zero; - this.padding3 = IntPtr.Zero; - this.padding4 = IntPtr.Zero; - } - } - - public class Connection : IDisposable - { - /// <summary> - /// A pointer to the underlying Connection structure - /// </summary> - private IntPtr rawConnection; - - /// <summary> - /// The current slot number - /// </summary> - private static int slot = -1; - - private int timeout = -1; - - private ArrayList filters = new ArrayList (); // of DBusHandleMessageFunction - private ArrayList matches = new ArrayList (); // of string - private Hashtable object_paths = new Hashtable (); // key: string value: DBusObjectPathVTable - - internal Connection(IntPtr rawConnection) - { - RawConnection = rawConnection; - } - - public Connection(string address) - { - // the assignment bumps the refcount - Error error = new Error(); - error.Init(); - RawConnection = dbus_connection_open(address, ref error); - if (RawConnection != IntPtr.Zero) { - dbus_connection_unref(RawConnection); - } else { - throw new DBusException(error); - } - - SetupWithMain(); - } - - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - public void Dispose (bool disposing) - { - if (disposing && RawConnection != IntPtr.Zero) - { - dbus_connection_disconnect(rawConnection); - - RawConnection = IntPtr.Zero; // free the native object - } - } - - public void Flush() - { - dbus_connection_flush(RawConnection); - } - - public void SetupWithMain() - { - dbus_connection_setup_with_g_main(RawConnection, IntPtr.Zero); - } - - ~Connection () - { - Dispose (false); - } - - internal static Connection Wrap(IntPtr rawConnection) - { - if (slot > -1) { - // Maybe we already have a Connection object associated with - // this rawConnection then return it - IntPtr rawThis = dbus_connection_get_data (rawConnection, slot); - if (rawThis != IntPtr.Zero && ((GCHandle)rawThis).Target == typeof(DBus.Connection)) { - return (DBus.Connection) ((GCHandle)rawThis).Target; - } - } - - // If it doesn't exist then create a new connection around it - return new Connection(rawConnection); - } - - public void AddFilter (DBusHandleMessageFunction func) - { - if (!dbus_connection_add_filter (RawConnection, - func, - IntPtr.Zero, - IntPtr.Zero)) - throw new OutOfMemoryException (); - - this.filters.Add (func); - } - - public void RemoveFilter (DBusHandleMessageFunction func) - { - dbus_connection_remove_filter (RawConnection, func, IntPtr.Zero); - - this.filters.Remove (func); - } - - public void AddMatch (string match_rule) - { - dbus_bus_add_match (RawConnection, match_rule, IntPtr.Zero); - - this.matches.Add (match_rule); - } - - public void RemoveMatch (string match_rule) - { - dbus_bus_remove_match (RawConnection, match_rule, IntPtr.Zero); - - this.matches.Remove (match_rule); - } - - internal void RegisterObjectPath (string path, DBusObjectPathVTable vtable) - { - if (!dbus_connection_register_object_path (RawConnection, path, ref vtable, IntPtr.Zero)) - throw new OutOfMemoryException (); - - this.object_paths[path] = vtable; - } - - internal void UnregisterObjectPath (string path) - { - dbus_connection_unregister_object_path (RawConnection, path); - - this.object_paths.Remove (path); - } - - - public string UniqueName - { - get - { - return Marshal.PtrToStringAnsi (dbus_bus_get_unique_name (RawConnection)); - } - } - - public int Timeout - { - get - { - return this.timeout; - } - set - { - this.timeout = value; - } - } - - private int Slot - { - get - { - if (slot == -1) - { - // We need to initialize the slot - if (!dbus_connection_allocate_data_slot (ref slot)) - throw new OutOfMemoryException (); - - Debug.Assert (slot >= 0); - } - - return slot; - } - } - - internal IntPtr RawConnection - { - get - { - return rawConnection; - } - set - { - if (value == rawConnection) - return; - - if (rawConnection != IntPtr.Zero) - { - // Remove our callbacks from this connection - foreach (DBusHandleMessageFunction func in this.filters) - dbus_connection_remove_filter (rawConnection, func, IntPtr.Zero); - - foreach (string match_rule in this.matches) - dbus_bus_remove_match (rawConnection, match_rule, IntPtr.Zero); - - foreach (string path in this.object_paths.Keys) - dbus_connection_unregister_object_path (rawConnection, path); - - // Get the reference to this - IntPtr rawThis = dbus_connection_get_data (rawConnection, Slot); - Debug.Assert (rawThis != IntPtr.Zero); - - // Blank over the reference - dbus_connection_set_data (rawConnection, Slot, IntPtr.Zero, IntPtr.Zero); - - // Free the reference - ((GCHandle) rawThis).Free(); - - // Unref the connection - dbus_connection_unref(rawConnection); - } - - this.rawConnection = value; - - if (rawConnection != IntPtr.Zero) - { - GCHandle rawThis; - - dbus_connection_ref (rawConnection); - - // We store a weak reference to the C# object on the C object - rawThis = GCHandle.Alloc (this, GCHandleType.WeakTrackResurrection); - - dbus_connection_set_data(rawConnection, Slot, (IntPtr) rawThis, IntPtr.Zero); - - // Add the callbacks to this new connection - foreach (DBusHandleMessageFunction func in this.filters) - dbus_connection_add_filter (rawConnection, func, IntPtr.Zero, IntPtr.Zero); - - foreach (string match_rule in this.matches) - dbus_bus_add_match (rawConnection, match_rule, IntPtr.Zero); - - foreach (string path in this.object_paths.Keys) { - DBusObjectPathVTable vtable = (DBusObjectPathVTable) this.object_paths[path]; - dbus_connection_register_object_path (rawConnection, path, ref vtable, IntPtr.Zero); - } - } - else - { - this.filters.Clear (); - this.matches.Clear (); - this.object_paths.Clear (); - } - } - } - - [DllImport("dbus-glib-1")] - private extern static void dbus_connection_setup_with_g_main(IntPtr rawConnection, - IntPtr rawContext); - - [DllImport ("dbus-1")] - private extern static IntPtr dbus_connection_open (string address, ref Error error); - - [DllImport ("dbus-1")] - private extern static void dbus_connection_unref (IntPtr ptr); - - [DllImport ("dbus-1")] - private extern static void dbus_connection_ref (IntPtr ptr); - - [DllImport ("dbus-1")] - private extern static bool dbus_connection_allocate_data_slot (ref int slot); - - [DllImport ("dbus-1")] - private extern static void dbus_connection_free_data_slot (ref int slot); - - [DllImport ("dbus-1")] - private extern static bool dbus_connection_set_data (IntPtr ptr, - int slot, - IntPtr data, - IntPtr free_data_func); - - [DllImport ("dbus-1")] - private extern static void dbus_connection_flush (IntPtr ptr); - - [DllImport ("dbus-1")] - private extern static IntPtr dbus_connection_get_data (IntPtr ptr, - int slot); - - [DllImport ("dbus-1")] - private extern static void dbus_connection_disconnect (IntPtr ptr); - - [DllImport ("dbus-1")] - private extern static IntPtr dbus_bus_get_unique_name (IntPtr ptr); - - [DllImport("dbus-1")] - private extern static bool dbus_connection_add_filter(IntPtr rawConnection, - DBusHandleMessageFunction filter, - IntPtr userData, - IntPtr freeData); - - [DllImport("dbus-1")] - private extern static void dbus_connection_remove_filter(IntPtr rawConnection, - DBusHandleMessageFunction filter, - IntPtr userData); - - [DllImport("dbus-1")] - private extern static void dbus_bus_add_match(IntPtr rawConnection, - string rule, - IntPtr erro); - - [DllImport("dbus-1")] - private extern static void dbus_bus_remove_match(IntPtr rawConnection, - string rule, - IntPtr erro); - - [DllImport ("dbus-1")] - private extern static bool dbus_connection_register_object_path (IntPtr rawConnection, - string path, - ref DBusObjectPathVTable vTable, - IntPtr userData); - - [DllImport ("dbus-1")] - private extern static void dbus_connection_unregister_object_path (IntPtr rawConnection, - string path); - - } -} |