Skip to content

Commit

Permalink
Put all locks to one place.
Browse files Browse the repository at this point in the history
  • Loading branch information
SebastianStehle committed Jul 1, 2023
1 parent 6005a88 commit 2042eb8
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public async Task<JsonValue> ExecuteAsync(ScriptVars vars, string script, Script
context.Complete(JsonMapper.Map(value));
}));

var result = Execute(context.Engine, script);
var result = Execute(context, script);

return await context.CompleteAsync() ?? JsonMapper.Map(result);
}
Expand Down Expand Up @@ -109,7 +109,7 @@ public async Task<ContentData> TransformAsync(DataScriptVars vars, string script
}
}));

Execute(context.Engine, script);
Execute(context, script);

return await context.CompleteAsync() ?? vars.Data!;
}
Expand All @@ -131,7 +131,7 @@ public JsonValue Execute(ScriptVars vars, string script, ScriptOptions options =
.Extend(vars, options)
.Extend(extensions);

var result = Execute(context.Engine, script);
var result = Execute(context, script);

return JsonMapper.Map(result);
}
Expand Down Expand Up @@ -179,14 +179,11 @@ private ScriptExecutionContext<T> CreateEngine<T>(ScriptOptions options, Cancell
return new ScriptExecutionContext<T>(engine, ct);
}

private JsValue Execute(Engine engine, string script)
private JsValue Execute(ScriptExecutionContext context, string script)
{
var program = parser.Parse(script);
var parsed = parser.Parse(script);

lock (engine)
{
return engine.Evaluate(program);
}
return context.Evaluate(parsed);
}

private static Exception MapException(Exception inner)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================

using Esprima.Ast;
using Jint;
using Jint.Native;
using Squidex.Infrastructure.Tasks;

namespace Squidex.Domain.Apps.Core.Scripting;
Expand All @@ -19,6 +21,8 @@ protected ScriptExecutionContext(Engine engine)
Engine = engine;
}

public abstract JsValue Evaluate(Script program);

public abstract void Schedule(Func<IScheduler, CancellationToken, Task> action);
}

Expand Down Expand Up @@ -51,6 +55,14 @@ public void Complete(T value)
tcs.TrySetResult(value);
}

public override JsValue Evaluate(Script script)
{
lock (Engine)
{
return Engine.Evaluate(script);
}
}

public override void Schedule(Func<IScheduler, CancellationToken, Task> action)
{
if (IsCompleted)
Expand Down

0 comments on commit 2042eb8

Please sign in to comment.