From a929c9a3b465db8b7e17b9b39936c612c2621a7c Mon Sep 17 00:00:00 2001 From: "John (J5) Palmieri" Date: Fri, 14 Jul 2006 16:20:12 +0000 Subject: * Remove all bindings --- mono/Handler.cs | 172 -------------------------------------------------------- 1 file changed, 172 deletions(-) delete mode 100644 mono/Handler.cs (limited to 'mono/Handler.cs') diff --git a/mono/Handler.cs b/mono/Handler.cs deleted file mode 100644 index 87092f90..00000000 --- a/mono/Handler.cs +++ /dev/null @@ -1,172 +0,0 @@ -namespace DBus -{ - using System; - using System.Runtime.InteropServices; - using System.Diagnostics; - using System.Reflection; - using System.Collections; - - internal enum Result - { - Handled = 0, - NotYetHandled = 1, - NeedMemory = 2 - } - - internal class Handler - { - private string path = null; - private Introspector introspector = null; - private object handledObject = null; - private DBusObjectPathVTable vTable; - private Connection connection; - private Service service; - - // We need to hold extra references to these callbacks so that they don't - // get garbage collected before they are called back into from unmanaged - // code. - private DBusObjectPathUnregisterFunction unregister_func; - private DBusObjectPathMessageFunction message_func; - - public Handler(object handledObject, - string path, - Service service) - { - Service = service; - Connection = service.Connection; - HandledObject = handledObject; - this.path = path; - - // Create the vTable and register the path - this.unregister_func = new DBusObjectPathUnregisterFunction (Unregister_Called); - this.message_func = new DBusObjectPathMessageFunction (Message_Called); - - vTable = new DBusObjectPathVTable (this.unregister_func, this.message_func); - Connection.RegisterObjectPath (Path, vTable); - RegisterSignalHandlers(); - } - - private void RegisterSignalHandlers() - { - ProxyBuilder proxyBuilder = new ProxyBuilder(Service, HandledObject.GetType(), Path); - - foreach (DictionaryEntry interfaceEntry in this.introspector.InterfaceProxies) { - InterfaceProxy interfaceProxy = (InterfaceProxy) interfaceEntry.Value; - foreach (DictionaryEntry signalEntry in interfaceProxy.Signals) { - EventInfo eventE = (EventInfo) signalEntry.Value; - Delegate del = Delegate.CreateDelegate(eventE.EventHandlerType, proxyBuilder.GetSignalProxy(), "Proxy_" + eventE.Name); - eventE.AddEventHandler(HandledObject, del); - } - } - } - - public object HandledObject - { - get { - return this.handledObject; - } - - set { - this.handledObject = value; - - // Register the methods - this.introspector = Introspector.GetIntrospector(value.GetType()); - } - } - - public void Unregister_Called(IntPtr rawConnection, - IntPtr userData) - { - if (service != null) { - service.UnregisterObject(HandledObject); - } - - path = null; - } - - private int Message_Called(IntPtr rawConnection, - IntPtr rawMessage, - IntPtr userData) - { - Message message = Message.Wrap(rawMessage, Service); - Result res = Result.NotYetHandled; - - switch (message.Type) { - case Message.MessageType.MethodCall: - res = HandleMethod ((MethodCall) message); - break; - - case Message.MessageType.Signal: - // We're not interested in signals here because we're the ones - // that generate them! - break; - } - - message.Dispose (); - - return (int) res; - } - - private Result HandleMethod(MethodCall methodCall) - { - methodCall.Service = service; - - InterfaceProxy interfaceProxy = this.introspector.GetInterface(methodCall.InterfaceName); - if (interfaceProxy == null || !interfaceProxy.HasMethod(methodCall.Key)) { - // No such interface here. - return Result.NotYetHandled; - } - - 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); - methodReturn.Send(); - - return Result.Handled; - } - - internal string Path - { - get - { - return path; - } - } - - internal Connection Connection - { - get - { - return connection; - } - - set - { - this.connection = value; - } - } - - public Service Service - { - get - { - return service; - } - - set - { - this.service = value; - } - } - } -} -- cgit