mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2025-12-26 21:30:15 +01:00
Added UnregisterObject method.
This commit is contained in:
parent
14d9ef5be9
commit
e55e38d8df
3 changed files with 49 additions and 6 deletions
|
|
@ -1,3 +1,8 @@
|
|||
2004-05-23 Owen Fraser-Green <owen@discobabe.net>
|
||||
|
||||
* mono/Handler.cs, mono/Service.cs: Added UnregisterObject method
|
||||
which unregisters the object path and disposes the handler.
|
||||
|
||||
2004-05-23 Kristian Høgsberg <krh@redhat.com>
|
||||
|
||||
Patch from Timo Teräs <ext-timo.teras@nokia.com> (#614):
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ namespace DBus
|
|||
NeedMemory = 2
|
||||
}
|
||||
|
||||
internal class Handler
|
||||
internal class Handler : IDisposable
|
||||
{
|
||||
private string[] path = null;
|
||||
private string pathName = null;
|
||||
|
|
@ -22,6 +22,7 @@ namespace DBus
|
|||
private DBusObjectPathVTable vTable;
|
||||
private Connection connection;
|
||||
private Service service;
|
||||
private bool disposed = false;
|
||||
|
||||
internal delegate void DBusObjectPathUnregisterFunction(IntPtr rawConnection,
|
||||
IntPtr userData);
|
||||
|
|
@ -52,12 +53,38 @@ namespace DBus
|
|||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
Dispose(true);
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
private void Dispose(bool disposing)
|
||||
{
|
||||
if (!disposed) {
|
||||
if (disposing) {
|
||||
// Clean up managed resources
|
||||
}
|
||||
|
||||
service = null;
|
||||
|
||||
// Clean up unmanaged resources
|
||||
if (Connection != null && Connection.RawConnection != IntPtr.Zero && path != null) {
|
||||
dbus_connection_unregister_object_path(Connection.RawConnection,
|
||||
Path);
|
||||
}
|
||||
|
||||
connection = null;
|
||||
introspector = null;
|
||||
handledObject = null;
|
||||
}
|
||||
|
||||
disposed = true;
|
||||
}
|
||||
|
||||
~Handler()
|
||||
{
|
||||
if (Connection != null && Connection.RawConnection != IntPtr.Zero && path != null) {
|
||||
dbus_connection_unregister_object_path(Connection.RawConnection,
|
||||
Path);
|
||||
}
|
||||
Dispose(false);
|
||||
}
|
||||
|
||||
public Handler(object handledObject,
|
||||
|
|
@ -119,7 +146,11 @@ namespace DBus
|
|||
public void Unregister_Called(IntPtr rawConnection,
|
||||
IntPtr userData)
|
||||
{
|
||||
System.Console.WriteLine("FIXME: Unregister called.");
|
||||
if (service != null) {
|
||||
service.UnregisterObject(HandledObject);
|
||||
}
|
||||
|
||||
path = null;
|
||||
}
|
||||
|
||||
private int Message_Called(IntPtr rawConnection,
|
||||
|
|
|
|||
|
|
@ -73,6 +73,13 @@ namespace DBus
|
|||
}
|
||||
}
|
||||
|
||||
public void UnregisterObject(object handledObject)
|
||||
{
|
||||
Handler handler = (Handler) registeredHandlers[handledObject];
|
||||
registeredHandlers.Remove(handledObject);
|
||||
handler.Dispose();
|
||||
}
|
||||
|
||||
public void RegisterObject(object handledObject,
|
||||
string pathName)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue