示例#1
0
        internal static void EventCall(object sender, CfxV8HandlerExecuteEventArgs e)
        {
            var call = new CfxV8HandlerExecuteBrowserProcessCall();

            call.sender      = RemoteProxy.Wrap((CfxBase)sender);
            call.eventArgsId = AddEventArgs(e);
            call.RequestExecution(RemoteClient.connection);
            RemoveEventArgs(call.eventArgsId);
        }
示例#2
0
        internal static void execute(IntPtr gcHandlePtr, out int __retval, IntPtr name_str, int name_length, IntPtr @object, int argumentsCount, IntPtr arguments, out IntPtr retval, out IntPtr exception_str, out int exception_length, out IntPtr exception_gc_handle)
        {
            var self = (CfxV8Handler)System.Runtime.InteropServices.GCHandle.FromIntPtr(gcHandlePtr).Target;

            if (self == null)
            {
                __retval            = default(int);
                retval              = default(IntPtr);
                exception_str       = IntPtr.Zero;
                exception_length    = 0;
                exception_gc_handle = IntPtr.Zero;
                return;
            }
            var e            = new CfxV8HandlerExecuteEventArgs(name_str, name_length, @object, arguments, argumentsCount);
            var eventHandler = self.m_Execute;

            if (eventHandler != null)
            {
                eventHandler(self, e);
            }
            e.m_isInvalid = true;
            if (e.m_object_wrapped == null)
            {
                CfxApi.cfx_release(e.m_object);
            }
            if (e.m_arguments_managed == null)
            {
                for (int i = 0; i < argumentsCount; ++i)
                {
                    CfxApi.cfx_release(e.m_arguments[i]);
                }
            }
            if (e.m_exception_wrapped != null && e.m_exception_wrapped.Length > 0)
            {
                var exception_pinned = new PinnedString(e.m_exception_wrapped);
                exception_str       = exception_pinned.Obj.PinnedPtr;
                exception_length    = exception_pinned.Length;
                exception_gc_handle = exception_pinned.Obj.ToIntPtr();
            }
            else
            {
                exception_str       = IntPtr.Zero;
                exception_length    = 0;
                exception_gc_handle = IntPtr.Zero;
            }
            retval   = CfxV8Value.Unwrap(e.m_returnValue);
            __retval = e.m_returnValue != null || e.m_exception_wrapped != null ? 1 : 0;
        }
示例#3
0
        internal static void execute(IntPtr gcHandlePtr, out int __retval, IntPtr name_str, int name_length, IntPtr @object, out int object_release, UIntPtr argumentsCount, IntPtr arguments, out int arguments_release, out IntPtr retval, out IntPtr exception_str, out int exception_length, out IntPtr exception_gc_handle)
        {
            var self = (CfxV8Handler)System.Runtime.InteropServices.GCHandle.FromIntPtr(gcHandlePtr).Target;

            if (self == null || self.CallbacksDisabled)
            {
                __retval            = default(int);
                object_release      = 1;
                arguments_release   = 1;
                retval              = default(IntPtr);
                exception_str       = IntPtr.Zero;
                exception_length    = 0;
                exception_gc_handle = IntPtr.Zero;
                return;
            }
            var e = new CfxV8HandlerExecuteEventArgs();

            e.m_name_str    = name_str;
            e.m_name_length = name_length;
            e.m_object      = @object;
            e.m_arguments   = new IntPtr[(ulong)argumentsCount];
            if (e.m_arguments.Length > 0)
            {
                System.Runtime.InteropServices.Marshal.Copy(arguments, e.m_arguments, 0, (int)argumentsCount);
            }
            self.m_Execute?.Invoke(self, e);
            e.m_isInvalid     = true;
            object_release    = e.m_object_wrapped == null? 1 : 0;
            arguments_release = e.m_arguments_managed == null? 1 : 0;
            if (e.m_exception_wrapped != null && e.m_exception_wrapped.Length > 0)
            {
                var exception_pinned = new PinnedString(e.m_exception_wrapped);
                exception_str       = exception_pinned.Obj.PinnedPtr;
                exception_length    = exception_pinned.Length;
                exception_gc_handle = exception_pinned.Obj.GCHandlePtr();
            }
            else
            {
                exception_str       = IntPtr.Zero;
                exception_length    = 0;
                exception_gc_handle = IntPtr.Zero;
            }
            retval   = CfxV8Value.Unwrap(e.m_returnValue);
            __retval = e.m_returnValue != null || e.m_exception_wrapped != null ? 1 : 0;
        }