AllJoynUnity.AllJoyn.BusObject.AddMethodHandler C# (CSharp) Method

AddMethodHandler() public method

public AddMethodHandler ( InterfaceDescription member, MethodHandler handler ) : QStatus
member InterfaceDescription
handler MethodHandler
return QStatus
            public QStatus AddMethodHandler(InterfaceDescription.Member member, MethodHandler handler)
            {
                InternalMethodHandler internalMethodHandler = (IntPtr bus, IntPtr m, IntPtr msg) =>
                {
                    MethodHandler h = handler;
                    h(new InterfaceDescription.Member(m), new Message(msg));
                };
                _methodHandlerDelegateRefHolder.Add(internalMethodHandler);

                GCHandle membGch = GCHandle.Alloc(member._member, GCHandleType.Pinned);

                MethodEntry entry;
                entry.member = membGch.AddrOfPinnedObject();
                entry.method_handler = Marshal.GetFunctionPointerForDelegate(internalMethodHandler);

                GCHandle gch = GCHandle.Alloc(entry, GCHandleType.Pinned);
                QStatus ret = alljoyn_busobject_addmethodhandlers(_busObject, gch.AddrOfPinnedObject(), (UIntPtr)1);
                gch.Free();
                membGch.Free();

                return ret;
            }