/// <summary> /// Destroys object /// </summary> /// <param name="disposing">Flag, allowing destruction of /// managed objects contained in fields of class</param> private void Dispose(bool disposing) { if (_disposedFlag.Set()) { if (_dispatcher != null) { _dispatcher.Invoke(() => _jsRuntime.Dispose()); _dispatcher.Dispose(); } if (disposing) { if (_externalObjects != null) { _externalObjects.Clear(); } if (_nativeFunctions != null) { _nativeFunctions.Clear(); } _externalObjectFinalizeCallback = null; } } }
/// <summary> /// Creates a new <c>Object</c> that stores some external data /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <param name="data">External data that the object will represent. May be null.</param> /// <param name="finalizer">A callback for when the object is finalized. May be null.</param> /// <returns>The new <c>Object</c></returns> public static IeJsValue CreateExternalObject(IntPtr data, JsObjectFinalizeCallback finalizer) { IeJsValue reference; IeJsErrorHelpers.ThrowIfError(IeNativeMethods.JsCreateExternalObject(data, finalizer, out reference)); return(reference); }
/// <summary> /// Constructs an instance of the Chakra JsRT engine /// </summary> /// <param name="engineMode">JS engine mode</param> /// <param name="enableDebugging">Flag for whether to enable script debugging features</param> protected ChakraJsRtJsEngineBase(JsEngineMode engineMode, bool enableDebugging) : base(engineMode) { _enableDebugging = enableDebugging; #if NETSTANDARD1_3 _externalObjectFinalizeCallback = ExternalObjectFinalizeCallback; #endif }
/// <summary> /// Constructs an instance of the Chakra JsRT JavaScript engine /// </summary> /// <param name="engineMode">JavaScript engine mode</param> /// <param name="enableDebugging">Flag for whether to enable script debugging features</param> protected ChakraJsRtJsEngineBase(JsEngineMode engineMode, bool enableDebugging) { _engineMode = engineMode; _engineModeName = JsEngineModeHelpers.GetModeName(engineMode); _enableDebugging = enableDebugging; #if NETSTANDARD1_3 _externalObjectFinalizeCallback = ExternalObjectFinalizeCallback; #endif }
/// <summary> /// Destroys object /// </summary> /// <param name="disposing">Flag, allowing destruction of /// managed objects contained in fields of class</param> protected virtual void Dispose(bool disposing) { #if NETSTANDARD1_3 if (disposing) { if (_externalObjects != null) { _externalObjects.Clear(); } _externalObjectFinalizeCallback = null; } #endif }
/// <summary> /// Constructs an instance of adapter for the ChakraCore JS engine /// </summary> /// <param name="settings">Settings of the ChakraCore JS engine</param> public ChakraCoreJsEngine(ChakraCoreSettings settings) { ChakraCoreSettings chakraCoreSettings = settings ?? new ChakraCoreSettings(); JsRuntimeAttributes attributes = JsRuntimeAttributes.None; if (chakraCoreSettings.DisableBackgroundWork) { attributes |= JsRuntimeAttributes.DisableBackgroundWork; } if (chakraCoreSettings.DisableNativeCodeGeneration) { attributes |= JsRuntimeAttributes.DisableNativeCodeGeneration; } if (chakraCoreSettings.DisableEval) { attributes |= JsRuntimeAttributes.DisableEval; } if (chakraCoreSettings.EnableExperimentalFeatures) { attributes |= JsRuntimeAttributes.EnableExperimentalFeatures; } _externalObjectFinalizeCallback = ExternalObjectFinalizeCallback; _dispatcher.Invoke(() => { try { _jsRuntime = JsRuntime.Create(attributes, null); _jsContext = _jsRuntime.CreateContext(); _jsContext.AddRef(); } catch (Exception e) { throw new JsEngineLoadException( string.Format(CoreStrings.Runtime_JsEngineNotLoaded, EngineName, e.Message), EngineName, EngineVersion, e); } }); }
internal static extern JsErrorCode JsCreateExternalArrayBuffer(IntPtr data, uint byteLength, JsObjectFinalizeCallback finalizeCallback, IntPtr callbackState, out JsValue result);
internal static extern JsErrorCode JsCreateExternalObject(IntPtr data, JsObjectFinalizeCallback finalizeCallback, out JsValue obj);
internal static extern JsErrorCode JsCreateExternalObject(IntPtr data, JsObjectFinalizeCallback finalizeCallback, out EdgeJsValue obj);
/// <summary> /// Creates a new <c>Object</c> that stores some external data /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <param name="data">External data that the object will represent. May be null</param> /// <param name="finalizer">The callback for when the object is finalized. May be null.</param> /// <returns>The new <c>Object</c></returns> public static EdgeJsValue CreateExternalObject(IntPtr data, JsObjectFinalizeCallback finalizer) { EdgeJsValue reference; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsCreateExternalObject(data, finalizer, out reference)); return reference; }
internal static extern JsErrorCode JsCreateExternalArrayBuffer(IntPtr data, uint byteLength, JsObjectFinalizeCallback finalizeCallback, IntPtr callbackState, out bool result);
JsCreateExternalObject(IntPtr data, JsObjectFinalizeCallback finalizeCallback, out JsValue obj);