Commit 4a77a2dd authored by Jon Trowbridge's avatar Jon Trowbridge

2004-08-30 Jon Trowbridge <trow@ximian.com>

	    * mono/BusDriver.cs: Added.  This is a class for interacting with
	    the org.freedesktop.DBus service.

	    * mono/Message.cs: Added a mechanism to expose the message that is
	    currently being dispatched via the static Message.Current
	    property.  Added Message.Sender and Message.Destination
	    properties.

	    * mono/Handler.cs: Expose the dispatched message via
	    Message.Current when handling method calls.

	    * mono/Service.cs: Expose the dispatched message via
	    Message.Current when handling signal emissions.

	    * mono/Connection.cs: Bind dbus_bus_get_base_service via the
	    Connection.BaseService property.
parent 3a78ce17
2004-08-30 Jon Trowbridge <trow@ximian.com>
* mono/BusDriver.cs: Added. This is a class for interacting with
the org.freedesktop.DBus service.
* mono/Message.cs: Added a mechanism to expose the message that is
currently being dispatched via the static Message.Current
property. Added Message.Sender and Message.Destination
properties.
* mono/Handler.cs: Expose the dispatched message via
Message.Current when handling method calls.
* mono/Service.cs: Expose the dispatched message via
Message.Current when handling signal emissions.
* mono/Connection.cs: Bind dbus_bus_get_base_service via the
Connection.BaseService property.
2004-08-28 Havoc Pennington <hp@redhat.com>
* dbus/dbus-userdb.c (_dbus_is_console_user): remove unused variable
......
namespace DBus
{
using System;
public delegate void ServiceEventHandler (string serviceName);
[Interface ("org.freedesktop.DBus")]
public abstract class BusDriver
{
[Method]
public abstract string[] ListServices ();
[Method]
public abstract string GetServiceOwner (string serviceName);
[Method]
public abstract UInt32 GetConnectionUnixUser (string connectionName);
[Signal]
public virtual event ServiceEventHandler ServiceCreated;
[Signal]
public virtual event ServiceEventHandler ServiceDeleted;
static public BusDriver New (Connection connection)
{
Service service;
service = Service.Get (connection, "org.freedesktop.DBus");
BusDriver driver;
driver = (BusDriver) service.GetObject (typeof (BusDriver), "/org/freedesktop/DBus");
return driver;
}
}
}
......@@ -76,6 +76,14 @@ namespace DBus
return new Connection(rawConnection);
}
public string BaseService
{
get
{
return Marshal.PtrToStringAnsi (dbus_bus_get_base_service (RawConnection));
}
}
public int Timeout
{
get
......@@ -182,5 +190,8 @@ namespace DBus
[DllImport ("dbus-1")]
private extern static void dbus_connection_disconnect (IntPtr ptr);
[DllImport ("dbus-1")]
private extern static IntPtr dbus_bus_get_base_service (IntPtr ptr);
}
}
......@@ -177,11 +177,15 @@ namespace DBus
}
MethodInfo method = interfaceProxy.GetMethod(methodCall.Key);
Message.Push (methodCall);
// Now call the method. FIXME: Error handling
object [] args = methodCall.Arguments.GetParameters(method);
object retVal = method.Invoke(this.handledObject, args);
Message.Pop ();
// Create the reply and send it
MethodReturn methodReturn = new MethodReturn(methodCall);
methodReturn.Arguments.AppendResults(method, retVal, args);
......
......@@ -9,6 +9,7 @@ ASSEMBLY_NAME=dbus-sharp
DBUS_SHARP_FILES= \
Arguments.cs \
Bus.cs \
BusDriver.cs \
Connection.cs \
Custom.cs \
DBusException.cs \
......
......@@ -8,6 +8,25 @@ namespace DBus
public class Message
{
private static Stack stack = new Stack ();
static public Message Current {
get
{
return stack.Count > 0 ? (Message) stack.Peek () : null;
}
}
static internal void Push (Message message)
{
stack.Push (message);
}
static internal void Pop ()
{
stack.Pop ();
}
/// <summary>
/// A pointer to the underlying Message structure
......@@ -294,6 +313,22 @@ namespace DBus
}
}
public string Sender
{
get
{
return Marshal.PtrToStringAnsi(dbus_message_get_sender(RawMessage));
}
}
public string Destination
{
get
{
return Marshal.PtrToStringAnsi(dbus_message_get_destination(RawMessage));
}
}
protected int Slot
{
get
......@@ -373,5 +408,8 @@ namespace DBus
[DllImport("dbus-1")]
private extern static IntPtr dbus_message_get_destination(IntPtr rawMessage);
[DllImport("dbus-1")]
private extern static IntPtr dbus_message_get_sender(IntPtr rawMessage);
}
}
......@@ -128,7 +128,9 @@ namespace DBus
// We're only interested in signals
Signal signal = (Signal) message;
if (SignalCalled != null) {
Message.Push (message);
SignalCalled(signal);
Message.Pop ();
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment