“Edge” script context

Each script context contains its own global object, distinct from the global object in other script contexts.

Many Chakra hosting APIs require an "active" script context, which can be set using Current. Chakra hosting APIs that require a current context to be set will note that explicitly in their documentation.

        /// <summary>
        /// Constructs an instance of the Chakra “Edge” JsRT engine
        /// </summary>
        /// <param name="enableDebugging">Flag for whether to enable script debugging features</param>
        public ChakraEdgeJsRtJsEngine(bool enableDebugging)
            : base(JsEngineMode.ChakraEdgeJsRt, enableDebugging)
        {
            _dispatcher.Invoke(() =>
            {
                try
                {
                    _jsRuntime = CreateJsRuntime();
                    _jsContext = _jsRuntime.CreateContext();
                }
                catch (JsUsageException e)
                {
                    string errorMessage;
                    if (e.ErrorCode == JsErrorCode.WrongThread)
                    {
                        errorMessage = CommonStrings.Runtime_JsEnginesConflictOnMachine;
                    }
                    else
                    {
                        errorMessage = string.Format(CommonStrings.Runtime_EdgeJsEngineNotLoaded, e.Message);
                    }

                    throw new JsEngineLoadException(errorMessage, _engineModeName);
                }
                catch (Exception e)
                {
                    throw new JsEngineLoadException(
                        string.Format(CommonStrings.Runtime_EdgeJsEngineNotLoaded, e.Message), _engineModeName);
                }
            });
        }
Esempio n. 2
0
        public override object Evaluate(string expression)
        {
            object result = InvokeScript(() =>
            {
                EdgeJsValue resultValue = EdgeJsContext.RunScript(expression);

                return(MapToHostType(resultValue));
            });

            return(result);
        }
        public override object Evaluate(string expression, string documentName)
        {
            object result = InvokeScript(() =>
            {
                EdgeJsValue resultValue = EdgeJsContext.RunScript(expression, _jsSourceContext++, documentName);

                return(MapToHostType(resultValue));
            });

            return(result);
        }
		internal static extern JsErrorCode JsContextRelease(EdgeJsContext reference, out uint count);
		internal static extern JsErrorCode JsContextAddRef(EdgeJsContext reference, out uint count);
		/// <summary>
		/// Initializes a new instance of the <see cref="EdgeJsScope"/> struct
		/// </summary>
		/// <param name="context">The context to create the scope for</param>
		public EdgeJsScope(EdgeJsContext context)
		{
			_disposed = false;
			_previousContext = EdgeJsContext.Current;
			EdgeJsContext.Current = context;
		}
 public override void Execute(string code, string documentName)
 {
     InvokeScript(() => EdgeJsContext.RunScript(code, _jsSourceContext++, documentName));
 }
 internal static extern JsErrorCode JsContextRelease(EdgeJsContext reference, out uint count);
 /// <summary>
 /// Initializes a new instance of the <see cref="EdgeJsScope"/> struct
 /// </summary>
 /// <param name="context">The context to create the scope for</param>
 public EdgeJsScope(EdgeJsContext context)
 {
     _disposedFlag = new StatedFlag();
     _previousContext = EdgeJsContext.Current;
     EdgeJsContext.Current = context;
 }
		internal static extern JsErrorCode JsSetCurrentContext(EdgeJsContext context);
 internal static extern JsErrorCode JsGetRuntime(EdgeJsContext context, out EdgeJsRuntime runtime);
 /// <summary>
 /// Initializes a new instance of the <see cref="EdgeJsScope"/> struct
 /// </summary>
 /// <param name="context">The context to create the scope for</param>
 public EdgeJsScope(EdgeJsContext context)
 {
     _disposedFlag         = new StatedFlag();
     _previousContext      = EdgeJsContext.Current;
     EdgeJsContext.Current = context;
 }
 internal static extern JsErrorCode JsSetCurrentContext(EdgeJsContext context);
 internal static extern JsErrorCode JsGetCurrentContext(out EdgeJsContext currentContext);
 internal static extern JsErrorCode JsCreateContext(EdgeJsRuntime runtime, out EdgeJsContext newContext);
		internal static extern JsErrorCode JsCreateContext(EdgeJsRuntime runtime, out EdgeJsContext newContext);
Esempio n. 17
0
 public override void Execute(string code)
 {
     InvokeScript(() => EdgeJsContext.RunScript(code));
 }
		internal static extern JsErrorCode JsGetCurrentContext(out EdgeJsContext currentContext);
 protected override void InnerStartDebugging()
 {
     EdgeJsContext.StartDebugging();
 }
		internal static extern JsErrorCode JsGetRuntime(EdgeJsContext context, out EdgeJsRuntime runtime);
 internal static extern JsErrorCode JsContextAddRef(EdgeJsContext reference, out uint count);